In rare cases, a pop-up may appear momentarily in the upper left corner

When a popup is displayed, the position center is specified, but in rare cases, the popup appears only momentarily in the upper left corner.This phenomenon may or may not occur even if the same process is repeated.
Not all the glitches are in all environments, so I will add the information.
I'm looking at the code around here right now, and it looks like when you set it to hidden, the coordinates are zeroed, the popup is displayed while it is zeroed, and then it moves from the bottom towards the center.
    /// The offset when the popup is displayed
    private var displayedOffsetY: CGFloat {
        if opaqueBackground {
            if position.isTop {
                return verticalPadding + (useSafeAreaInset ? 0 :  -safeAreaInsets.top)
            }
            if position.isVerticalCenter {
                return (screenHeight - sheetContentRect.height)/2 - safeAreaInsets.top
            }
            if position.isBottom {
                return screenHeight - sheetContentRect.height - keyboardHeightHelper.keyboardHeight - verticalPadding + (useSafeAreaInset ? -safeAreaInsets.bottom : 0) - safeAreaInsets.top
            }
        }

        if position.isTop {
            return verticalPadding + (useSafeAreaInset ? 0 : -safeAreaInsets.top)
        }
        if position.isVerticalCenter {
            return (presenterContentRect.height - sheetContentRect.height)/2
        }
        if position.isBottom {
            return presenterContentRect.height - sheetContentRect.height + safeAreaInsets.bottom - verticalPadding + (useSafeAreaInset ? -safeAreaInsets.bottom : 0)
        }
        return 0
    }

    private var displayedOffsetX: CGFloat {
        if position.isLeading {
            return horizontalPadding + (useSafeAreaInset ? safeAreaInsets.leading : 0)
        }
        if position.isHorizontalCenter {
            return (screenSize.width - sheetContentRect.width)/2 - safeAreaInsets.leading
        }
        if position.isTrailing {
            return screenSize.width - sheetContentRect.width - horizontalPadding - (useSafeAreaInset ? safeAreaInsets.trailing : 0)
        }
        return 0
    }

    /// The offset when the popup is hidden
    private var hiddenOffset: CGPoint {
        let from: AppearFrom
        if let appearFrom = appearFrom {
            from = appearFrom
        } else if position.isLeading {
            from = .left
        } else if position.isTrailing {
            from = .right
        } else if position == .top {
            from = .top
        } else {
            from = .bottom
        }

        if sheetContentRect.isEmpty {
            return .zero
        }
        switch from {
        case .top:
            return CGPoint(x: displayedOffsetX, y: -presenterContentRect.minY - safeAreaInsets.top - sheetContentRect.height)
        case .bottom:
            return CGPoint(x: displayedOffsetX, y: screenHeight)
        case .left:
            return CGPoint(x: -screenSize.width, y: displayedOffsetY)
        case .right:
            return CGPoint(x: screenSize.width, y: displayedOffsetY)
        }
    }

After passing the following code in hiddenOffset, the popup is displayed in the upper left corner for a moment. position center In the case of position center, the popup moves from the bottom center to the center, but the behavior now is that it is displayed in hiddenOffset .zero, then moves to the bottom center and then to the center. It looks like it's trying to make it look like it's doing that.
if sheetContentRect.isEmpty {
            return .zero
}

I confirmed that the phenomenon occurs when breaking at 432 on the func sheet. There was a case that it was so fast that it could not be confirmed with the naked eye, but with this method, it was 100% confirmed.

Sourcecode
import UIKit
import SwiftUI
import PopupView

// ContentSampleViewを呼び出すUIHostingController
class ContentSampleViewController: UIHostingController<ContentSampleView> {
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder, rootView: ContentSampleView())
    }
}

struct ContentSampleView: View {
    @State var isShowing: Bool = false

    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundColor(.accentColor)
            Text("Hello, world!")

            Button {
                isShowing = true
            } label: {
                Text("Open").foregroundColor(.black).underline()
            }
            .popup(isPresented: $isShowing) {

                Text("The popup")
                                    .frame(width: 200, height: 60)
                                    .background(Color(red: 0.85, green: 0.8, blue: 0.95))
                                    .cornerRadius(30.0)
            } customize: {
                $0.isOpaque(true).type(.default).dragToDismiss(true).closeOnTap(false).backgroundColor(Color.black.opacity(0.5)).dismissCallback {
                    isShowing = false
                }
            }
        }
        .padding()
    }
}

I also reproduced the following code It's too early to see, but it seems to occur in all environments.
import SwiftUI
import PopupView

struct ContentView: View {
    @State var isShowingCartDiscountView: Bool = false

    var body: some View {
        VStack {
            Button {
                isShowingCartDiscountView = true
            } label: {
                Text("Open").foregroundColor(.black).underline()
            }
            .popup(isPresented: $isShowingCartDiscountView) {

                Text("The popup")
                                    .frame(width: 200, height: 60)
                                    .background(Color(red: 0.85, green: 0.8, blue: 0.95))
                                    .cornerRadius(30.0)
            } customize: {
                $0.isOpaque(true).type(.default).dragToDismiss(true).closeOnTap(false).backgroundColor(Color.black.opacity(0.5)).dismissCallback {
                    isShowingCartDiscountView = false
                }
            }
        }
        .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

If you can't always see it in 0.1 seconds, it's not a highly important issue, but this time was not stable. I was curious as to why it was visible or not visible, but I have not been able to figure out the cause for that yet.
At any rate, I am having a very hard time because sometimes I can continue to see it for a few seconds that I can see it with the naked eye.

I met the same issue when using PopupView

Hey guys, thanks everyone for your help! Please check out version 2.5.4 - I think I defeated this one. Have a wonderful day!

Nice update. Thanks for responding @f3dm76  . I will make sure it works tomorrow morning .

I downloaded the latest 2.5.4 and tried it with a break in line 449 of PopupView.swift. I confirmed that the position when hidden has changed and the transition now starts from the bottom right.
https://github.com/exyte/PopupView/assets/43707/026eecbd-7ae0-449c-8076-04fe1e74d241

Hey @tichise, do you still see the weird flashing, though? The fact that position is changed when hidden is all right, it's the way it should be.

I tried various things throughout the day yesterday and this phenomenon appears to be fixed. I will let you know if I reproduce it again.


add have_all_attributes_in

Added another matcher to check that all attributes are included in the given list

Superseded by #14


uppercase suggestion prevents other good suggestion

German "schänke" should suggest "schenke" and "Schänke", but it only suggests "Schänke". The issue seems to be that "Schänke" is found first and then if (candidates.isEmpty()) isn't true anymore. Here's a test:
https://github.com/languagetool-org/languagetool/blob/6fba53be36bc66ddf3ed8d7410b91430912c563f/languagetool-language-modules/de/src/test/java/org/languagetool/rules/de/GermanSpellerRuleTest.java#L409-L427

I don't know much about the Speller module; @jaumeortola ?

Is this issue still valid? Daniel -- you seem to know more about the speller than I do; if you can modify the code and provide a patch, please go ahead!

The issue is still valid. I'll see if I can provide a patch.


Provide KUKSA Companion APK in PR Build Pipelines

Is your feature request related to a problem? Please describe.
To make testing / reviewing easier for "outsiders" who don't have access to Android Studio and can't / don't want to build the app themselves we should provide a signed APK of the Companion App inside the PR Pipeline.
Describe the solution you'd like
Provide a signed APK of the Companion App inside the PR Pipeline.
Additional context
I tried this in a naive approach, however failed because secrets are not passed when a workflow is triggered from a forked repository. Therefore we can neither access boschglobal nor eclipse-kuksa's secrets for this approach.

Since we cannot access the secrets when creating a cross-repository PR we can only provide a debug-signed .apk of the app.


Fix Windows clipboard behavior and improve documentation

This PR fixes the inconsistent behavior introduced by #60 on Windows that made arboard's semantics entirely different on Windows vs the other platforms, preventing reasonable cross-platform usage.
In addition, it improves the documentation of Clipboard to note that your app's usage of arboard may differ depending on what combination of platforms are being targeted. For example, if you're only targeting macOS and Windows, nothing beyond opening and using the clipboard in a one-off fashion is needed. However if Linux is used[^1], then one copy of the clipboard should be kept around at all times.
[^1]: The SetLinuxExt builder can help with some of these cases, but is not a universal solution for all apps.
Closes https://github.com/1Password/arboard/issues/88

@ArturKovacs This is now released as 3.2.0 👍

Awesome! ♥


Vendor instrumentations

Vendored with the following logic:

Checked out versions 0.38b0 of instrumentations and their dependencies (asgi, dbapi, wsgi, util-http). One dependency, wrapt, was just added as a dependency of the distro.
Copied source code to vendor folder. opentelemetry.X -> azure.monitor.opentelemetry.vendor.opentelemetry.X)
Updated import statements
Copied optional dependencies for each instrumentation to _SUPPORTED_INSTRUMENTED_LIBRARIES_TO_INSTRUMENTS_MAP
Copied entry points to new entry point group. Something like this is needed so that the instrumentation is ONLY loaded once the optional dependencies are confirmed. The group name needs to change to not mess with the customer's existing auto instrumentation environment.
Use optional dependency ("instruments") tuple and get_dependency_conflicts instead of distribution dependency method.

Since I need code to be used to pass lint, I did not separate this pr. But I have separated the vendor folder as the first commit to make reviewing easier.

https://github.com/microsoft/ApplicationInsights-Python/issues/282

Just to confirm, these were copied from the production version of the instrumentations on Pypi correct?

What is the behavior when user uses the distro AND manually instruments with new versions of the supported instrumentations, now that we are vendoring current versions of the instrumentations?

What is the behavior when user uses the distro AND manually instruments with new versions of the supported instrumentations, now that we are vendoring current versions of the instrumentations?

After some testing, I have determined that our vendored instrumentation is considered different than any instrumentation the Cx may put on top of it. Because "_is_instrumented_by_opentelemetry" is a class level variable and our vendored instrumentations are in a different module, if the Cx uses our vendored instrumentation and then triggers there own, the 2nd will occur without the "Attempting to instrument while already instrumented" message. THe 2nd instrumentation seems to overwrite the vendored 1st one. I think this is the appropriate approach because it means our instrumentation does not interfere with the Cx's.

After some testing, I have determined that our vendored instrumentation is considered different than any instrumentation the Cx may put on top of it. Because "_is_instrumented_by_opentelemetry" is a class level variable and our vendored instrumentations are in a different module, if the Cx uses our vendored instrumentation and then triggers there own, the 2nd will occur without the "Attempting to instrument while already instrumented" message. THe 2nd instrumentation seems to overwrite the vendored 1st one. I think this is the appropriate approach because it means our instrumentation does not interfere with the Cx's.

Does that mean user will get duplicate telemetry?

After some testing, I have determined that our vendored instrumentation is considered different than any instrumentation the Cx may put on top of it. Because "_is_instrumented_by_opentelemetry" is a class level variable and our vendored instrumentations are in a different module, if the Cx uses our vendored instrumentation and then triggers there own, the 2nd will occur without the "Attempting to instrument while already instrumented" message. THe 2nd instrumentation seems to overwrite the vendored 1st one. I think this is the appropriate approach because it means our instrumentation does not interfere with the Cx's.

Does that mean user will get duplicate telemetry?

No duplication will occur.


Issue with Templates

Version
2.5.16
Reproduction link
https://github.com/Patrick-Spiegel/vue-template
Steps to reproduce
$ npm run dev
open http:// localhost:443 (removed the cert but forgot to change the port)
What is expected?
Website should look like:
test
hello world
What is actually happening?
Website looks like
hello world

The OverallHeader.vue cannot be found. But the index.vue can be found. Both files contain nearly the exact same code.

https://github.com/Patrick-Spiegel/vue-template/blob/f277d22c60ab93d05a796222e1ed0665a9fa434d/src/App.vue#L9
import { OverallHeader } from "./components/OverallHeader.vue";

should be
import OverallHeader from "./components/OverallHeader.vue";

You don't have a named export OverallHeader there.


Stop generating fragments of uppercase SQL

Hibernate generates lowercase SQL, because it isn't 1980 anymore, and hasn't been for a while.
(I already fixed this in H6, this fix is for H5.)

I've merged this in master but not backporting it yet.

https://hibernate.atlassian.net/browse/HHH-14240

@gavinking
Hibernate really should use upper-case names of all tables and columns in the INFORMATION_SCHEMA for H2. select * from INFORMATION_SCHEMA.sequences doesn't work in some versions of H2 (in 1.4.200, for example) when DATABASE_TO_UPPER=FALSE setting is in use.

Many thanks @katzyn , I'll revert this.  We can then think about options without any rush.

Reverted, sorry Gavin! This will need a bit more consideration.
I'm quite fond of using H2 with DATABASE_TO_UPPER=FALSE, I remember needing to use it in specific benchmark tests, so I believe we should generate SQL that (by default) matches its internal expectations.

@Sanne

I'm quite fond of using H2 with DATABASE_TO_UPPER=FALSE, I remember needing to use it in specific benchmark tests, so I believe we should generate SQL that (by default) matches its internal expectations.

Well I think I fixed that, since there's a test for it (that still passes after this change).
It was only the schema name that needed to be uppercase, so I left that uppercase.

(See H2DialectDataBaseToUpperTest.)

select * from INFORMATION_SCHEMA.sequences doesn't work in some versions of H2 (in 1.4.200, for example)

OK, fine, so apparently there was a change in 1.4.200, which I didn't catch because we test on H2 1.4.197.
I've now made the tiny change so that the patch also works on H2 1.4.200 with DATABASE_TO_UPPER=FALSE.
Would you please now re-apply this.
(By the way, SQL is defined to be case insensitive for unquoted identifiers, and so I would call this setting a misfeature of H2, but whatever.)

Oh, and for the record, your preferred syntax syntax select * from INFORMATION_SCHEMA.SEQUENCES is broken if you set DATABASE_TO_UPPER=TRUE in H2.
So I don't know why we're even trying to accommodate these silly, completely non-standard and non-default behaviors of H2!

Oh, and for the record, your preferred syntax syntax select * from INFORMATION_SCHEMA.SEQUENCES is broken if you set DATABASE_TO_LOWER=TRUE in H2.

No, it isn't broken. Unquoted upper-case names of information schema tables and columns work in all versions of H2 with all combinations of settings. Unquoted lower-case and mixed-case names normally work, but in H2 1.4.198, 1.4.199, and 1.4.200 they don't work if and only if DATABASE_TO_UPPER=FALSE is specified and neither DATABASE_TO_LOWER=TRUE nor CASE_INSENSITIVE_IDENTIFIERS=TRUE are specified.

completely contrary-to-standard

In the SQL Standard everything is upper-case and lower-case and mixed-case identifiers are normalized to upper case. But some DBMS, such as PostgreSQL and MySQL, convert everything to lower case, and there are many other deviations across different DBMS. Many people use H2 as replacement of other DBMS in tests and for similar purposes, that's why all these weird settings exist in H2. I don't like them too, but they are used (and sometimes misused) very often.

This change has likely more impact than what we can think of during a simple PR review, so I want to be cautious.
As mentioned I have grounds to suspect an impact on performance and other subtle compatibility issues with various tools, neither of which are covered by SQL standards. But also I won't have time to spend a week to perform an in depth analysis of the implications, so either someone else volunteers or I will keep having my doubts about this.
Happy to change this going forward in Hibernate ORM 6 as it's a new major release, but I see no good reason to risk such a change in 5.

Unquoted upper-case names of information schema tables and columns work in all versions of H2 with all combinations of settings.

OK, I thought I had tested that and found that it *didn'*t work on 1.4.198, but perhaps I'm mistaken.

In the SQL Standard everything is upper-case and lower-case and mixed-case identifiers are normalized to upper case. But some DBMS, such as PostgreSQL and MySQL, convert unquoted identifiers to lower case, and there are many other deviations across different DBMS.

And yet the net effect is that every SQL database acts as a case-insensitive language from the point of view of the user, and offers a well-defined way (quoted identifiers) to achieve case-sensitivity if necessary.
And that is the behavior that Hibernate does and should support.
Hibernate doesn't need to support weird and pointless toggles that make SQL act in a non-standard way, especially toggles that exhibit inconsistent and differently-broken behavior across different versions of the database.
(If you have something that behaves differently between version 1.4.197 and 1.4.198 then we already know it is bad and wrong and shouldn't be used.)
Now, for Hibernate 5, where we do have a very strong requirement for backward compatibility, then sure, I agree that it's a good idea to maintain the current behavior, which is why I quickly fixed this as soon as it was pointed out, and why the current patch rolls back that tiny change.
But going forward (H6) I would say that this is the sort of thing we don't need to support, and it's MUCH, MUCH more important for Hibernate to not generate ugly unprofessional-looking SQL with a mix of lowercase and uppercase identifiers.

This change has likely more impact than what we can think of during a simple PR review, so I want to be cautious.

I strongly disagree. These are changes I already made in H6 after very extensive testing.
(Indeed, I'm pretty sure that I'm the only person who has invested so much time testing across so many different SQL dialects in recent times, as evidenced by the sheer number of wrong things I picked up on and fixed in the process.)
And OK, fine, so I missed something that only occurs:

on certain versions of H2,
when you run H2 with a very specific setting.

So my bad I guess but I really don't see what the problem is. If we break something on some weird version of some database then I'm sure users can let us know about that and we can fix it.
I think it's of far more serious concern that Hibernate 5 currently generates a random and entirely unprofessional-looking mix of uppercase and lowercase keywords and identifiers on some platforms, than that this patch carries a slight risk of breaking some completely obscure corner cases.
Indeed, if I were a user of one of these platforms, and saw my ORM generating SQL with lowercase select and uppercase SKIP, I think I would assume that I was working with a rubbish product and should look for a different solution.

These are changes I already made in H6 after very extensive testing.

In fairness, I wasn't able to test on Informix, nor on old versions of SQL server, but I would like to say I'm 99.999% certain that neither of these databases ever exhibited case-sensitive keywords.

@Sannw would you please reapply the change.

Merged Gavin's reviewed version as https://hibernate.atlassian.net/browse/HHH-14240
Will be included in 5.5.0.Final

Thanks @Sanne


Modify envy to be able tu use it from massa-as-sdk

In envy code there is if<EMAIL_ADDRESS>do something else do other things,
so astester.imports.ts cannot be imported directly.

related to #25

Discontinued initiative


📥 Load TOC from toc entry

This PR adds a new toc field to the project frontmatter and export list items, which explicitly outlines a table of contents (TOC) according to #1151.
To-Do

[x] Add documentation for toc
[x] Implement pattern loading
[x] Add end-to-end tests for toc in exports
[ ] Fix level depth (see failing TeX export)
~- [ ] Implement url loading~
[x] Implement --write-toc support
[x] Better error for non-file root entry (or relax this)

The existing internal representation for pages is less feature-rich than this TOC. So, we need to follow up this PR to extend our internals.

@rowanc1 UX-wise, how do you feel about myst init --write-toc modifying myst.yml vs spitting out a YAML fragment to stdout?

Yep, I think that should be the plan. It is annoying that that by default removes comments. Not sure if there is an easy way around that?

Yeah, that's a common problem among most YAML readers. I think we should just assume that the myst.yml isn't super weird, and manually insert a hunk. Maybe we can also update existing TOCs (by matching indentation), will need to think on that.

@rowanc1 @fwkoch this PR is making good progress.
When looking at TeX exports, it occurs to me that the current design of the TOC is export agnostic; it simply encodes a tree structure. For sites, we just use the TOC as-is, whilst for exports to e.g. LaTeX, the user should have some agency in controlling whether they are given chapter or section.
I think the proper solution to this is to add a configuration option on the export for TeX, i.e. top-level: chapters. Do you have any thoughts here?

I've removed the url TOC entry type. We used to have it in Jupyter Book, but I think it's mixing concerns; MyST TOCs should be local content, that doesn't prioritise site exports over any other; we could conceive of having external content pulled in, but I don't think the ergonomics / attribution story is very compelling.
So, external URLs need to be in the articles themselves, or the theme. @choldgraf can I get a sense check on this from your side; can you reason about whether Jupyter Book having the ability to set URL links in the TOC is important enough to keep?

@fwkoch keeping you in the loop -- I'm stuck on what the best resolution for choosing between chapter and section in TeX exports.
I am thinking that we should generalise for all exports with a new export field level which sets the level origin. We already have this conceptually for the article member of export. I imagine that the export level would take precedence (be inherited) for articles with unset levels.

Hey @agoose77 - I haven't done an in-depth code review yet, but just trying to respond to some of the comments.
First, from my perspective, dropping url is fine, simply because MyST currently doesn't support it. Later, we can decide if adding it is necessary for jupyterbook parity - but that's a totally independent feature.
Regarding the level question, it's a bit dicey. In addition to chapter and section, there is also an even broader level part. Just to summarize: Currently, if you are using a _toc.yml, the decision for which of these is your "highest level" (erm... lowest number? but largest in breadth...) comes from the top-level key: parts/chapters/sections. If you are using "myst-site-style" article list, you can use levels -1 and 0 (for part and chapter, respectively), then sections start at 1. Then, separate from what the user defined there, if the export is not tex-based, parts and chapters are meaningless, and everything is bumped up to start at 1.
Now, in the new TOC, users are no longer required to specify parts/chapters/sections or level - they just do nice simple nested children. So that comes all the way back around to what you were saying - we need another way to specify this, and possibly it should be tied to the tex export rather than the toc.
So, yeah, I think your suggestion is a great place to start:
---
exports:
  - format: tex
    toc:
      - file: ...
    level: chapters // default is 'sections' maybe, and would this be more clear as 'top_level' or something?
---

That gives us clearer validation at the export level (e.g. "typst export does not support 'parts'"), and it allows for easier re-use of tocs without ambiguous behaviour (e.g. "what happens to my 'chapters' in a site" - chapters just don't exist until you are in tex land).
Not sure how helpful all that is, pretty sure all I said is "I agree with you" 😆 but let me know if I can lend a hand with implementation or anything.

I did a quick search:

https://github.com/search?q="file%3A"+path%3A**%2F_toc.yml+language%3Ayaml&type=code
https://github.com/search?q="url%3A"+path%3A**%2F_toc.yml+language%3Ayaml&type=code

It looks lie ~10% of _toc.yml files in the wild use URLs. This is more than I had thought. I don't feel comfortable dropping URLs from the schema with that in mind, even though this PR throws an error if it encounters them.
I don't really know what a URL would mean in the context of a TeX or Typst export. I suppose we could embed them as links - that's a valid thing to do. So, I'll leave in for now.

@fwkoch would you be able to plumb in the top_level export option? I am getting some fatigue on this PR and would appreciate a boost!

Hey all - just a quick note from me because I missed the URL thing (@agoose77 if you'd like feedback from me please ping me in Discord or Slack, I get way too many github notifications and sometimes miss @ mentions here)
In my experience, URLs are pretty common to have as part of the left sidebar in a Jupyter Book. This is usually used in order to link to an external site that's related to your book. For example, 2i2c's catalyst project documentation includes an external link for the instructor training.

This might be less necessary with other ways to expose external links in MyST e.g., resolving this one would help a lot

https://github.com/executablebooks/myst-theme/issues/362

You could also imagine a dedicated section for external links in the left navbar that comes before or after the other links.

Ok - I've made a number of updates to this PR and I think it is ready for another look and a little more discussion.
First, the updates I made:

plumbed in top_level into the exports, as requested, and added some tests
myst init --write-toc will upgrade an existing _toc.yml file to a new myst.yml toc - This means when existing users update their myst version and see a new "legacy toc encountered" warning, they are given a call to action to fix it, rather than just getting stuck with the warning and no path forward.

Remaining jupyterbook upgrade will be implemented with #1223 but I think this toc upgrade is required as part of this release

Addressed a bug where export would prefer _toc.yml over myst.yml toc
Re-enabled export specifying _toc.yml file for toc - we don't want to break this functionality with the new toc implementation
URLs in the toc no longer cause the build to crash - they just log an error and are ignored (for comparison, URLs in _toc.yml files were silently ignored)

We can pick up the discussion on what to do with these URLs later.

Removed warning when encountering a nested _toc.yml file when building the project structure. There is currently no way to reproduce this functionality with the new toc, so we cannot really warn that it's an error...

Now, a few points of discussion:

URLs in the toc - I think this can be punted for now.

[ ] Open an issue for this

Nested TOCs - this feature helps keep constantly changing projects organized - one folder may be allowed to autogenerate the toc from contents while another folder is strictly structured. With tocs only defined in project config, this feature is not supported; we need a way to define a folder-specific toc without spawning an entirely new myst project. I think we can also defer this as a separate issue; for now, if you need this functionality, use the legacy _toc.yml.
Implicit index file - To me, this was a peeve of the _toc.yml format; the structure required a single index file. This led to ambiguous behaviour when building multi-page exports: Ignoring the index file was required to have parts/chapters work as expected... but then what if you don't want that file ignored. Now, in the new-style toc, there is no longer a need for an index file; the top level of the toc could theoretically be a title with children. However, there is still a check in the code that requires the first toc entry to be a file, basically reinstating the index file requirement but in an implicit way, where it is just toc[0] rather than toc.index. This feels bad to me, there are now export cases where toc[0] just gets popped off and ignored...
Addressing this will require some extra work on the site-project side, since sites need an index. Maybe we enforce the index page for projects but not for exports...? Or maybe we relax the project index page rule somehow...? Maybe this one is also fine to kick down the road. We can justify it for now and say we are matching _toc.yml behavior, but I think it's worth discussing our end goal on this point now.
And, to that end, I think just a high level review of the scope of this PR, looking back to the comments here: https://github.com/executablebooks/mystmd/issues/1102 - In retrospect, does this PR provide an "MVP" for a new toc that fits the requirements of jupyterbook migration without "closing any important doors?" From my perspective, aside from the points I raised above, I think it does...?

@fwkoch just one question for now - on the

"This feels bad to me, there are now export cases where toc[0] just gets popped off and ignored..."

does this mean that a user could silently(?) lose the page of a multi-article pdf export for example, with no means to fix it?

@fwkoch @rowanc1 and I discussed breaking _toc.yml exports in order to keep things simple (reverting 8eeb770). However, you've already written the code and I don't have super strong feelings.

Nested TOCs - this feature helps keep constantly changing projects organized - one folder may be allowed to autogenerate the toc from contents while another folder is strictly structured. With tocs only defined in project config, this feature is not supported; a nested myst.yml with a new toc will spawn an entirely new myst project. We need a way to define a folder-specific toc within a project. Can we just keep the legacy nested _toc.yml functionality for now?

Is this really something that we need? JB doesn't have this feature, for example. My personal preference is to have a single source of truth, rather than distributing it throughout the project file system.

However, there is still a check in the code that requires the first toc entry to be a file, basically reinstating the index file requirement but in an implicit way,

Yes, I don't love this. For me, the crux of the issue is whether the TOC is a site thing or a project thing. It's sort of both; it represents the heirarchy in the site, but it also represents the list of things that we want to build. Moreover, I don't think we need to impose this constraint; we just need a way to identify the index page. Perhaps we want to indicate the index page via a part?

URLs in the toc - Is it fine to warn and ignore URLs for now?

From @choldgraf and looking at projects in the wild, I think URLs in the site navigation are common-enough that we need to support them. As pointed out above, the TOC is both an allow-list and a site-map. In this case, it's the site-map part we're talking about.
To my mind, I think it's easy enough to say "drop URLs for non-web exports". I don't love the mixing of concerns, but it is simple enough to reason about.

Thanks for these discussion points - my thoughts below:

Is it fine to warn and ignore URLs for now?

If the current implementation does not support URLs, and this PR adds new functionality but does not deprecate pre-existing URL functionality, then I think it's fine to merge this in and iterate from there. I agree we do want to have URL supported in the TOC in the future, but as long as we aren't removing anything with this PR I think it's fine.

We need a way to define a folder-specific toc within a project. Can we just keep the legacy nested _toc.yml functionality for now?

Could you explain the use-case that you have in mind? Why would somebody define multiple folders with nested _toc.yml files instead of just define a single myst.yml file with a toc that had all the nested folders in it?
That said, I don't have clear opinions on this one, I'm fine deferring to your judgment on how to handle this in the short term.

Is the it sufficient to say for now we are matching _toc.yml behavior, including the non-ideal implicit index, and removing this limitation will be a separate feature?

I'd say "if this PR doesn't remove functionality and just mimics current suboptimal behavior, then let's just get it in and iterate". That is basically the theme of my thoughts in general haha.

does this PR provide an "MVP" for a new toc that fits the requirements of jupyterbook migration without "closing any important doors?"

As long as this PR isn't introducing a degradation of behavior, I think we should merge it in and iterate.
For an alpha-level MVP I think it'd be fine to not have URL support. I suspect that a beta-level MVP would need URL support, but I think our goal right now is to get to "good enough to recommend that power users give it a shot" and I think the current behavior is fine for that.

I took the liberty of making some content changes to this PR, with the goal of making it a bit easier to follow. Here are the main highlights, I'm happy if you want to revert any of them:

I moved the "TOC structure" to the top. I found it confusing that we described the TOC, but then started by describing the case that a TOC is implicitly defined (AKA, not in myst.yml). I feel that we should lead with the case that we think is most likely to be used.
I added subsections so that the main ideas are more glanceable from the in-page table of contents.
As part of this, I also cleaned up the xref documents, moved it under websites (instead of reference) and added a short section on the .json that exists for any page.

Thanks @choldgraf, that's a wonderful change. I've moved a subset of the changes to a separate PR as they aren't specifically TOC related (#1234). I've fixed the bug in MyST (unrelated to this PR) in #1233.

@agoose77 re:

Nested TOCs - this feature helps keep constantly changing projects organized - one folder may be allowed to autogenerate the toc from contents while another folder is strictly structured. With tocs only defined in project config, this feature is not supported; a nested myst.yml with a new toc will spawn an entirely new myst project. We need a way to define a folder-specific toc within a project. Can we just keep the legacy nested _toc.yml functionality for now?

Is this really something that we need? JB doesn't have this feature, for example. My personal preference is to have a single source of truth, rather than distributing it throughout the project file system.

It is a current feature, and it allows for dynamic content generation across a project except in a specific folder, where the sub-toc is defined. I think this is likely in use.


Installation not working on bash 5.1.16 in Debian

I tried installing some terminal color schemes from here
The installation worked for my Arch Gnome Shell but for my Debian Gnome Shell it gives me this error
bash: line 944: read: `/apps/gnome-terminal/profiles/default_profile': not a valid identifier
environment: line 684: --get: command not found
environment: line 693: --get: command not found
environment: line 284: : command not found
environment: line 284: : command not found
environment: line 267: : command not found
environment: line 267: : command not found
environment: line 267: : command not found
environment: line 267: : command not found
environment: line 267: : command not found
environment: line 267: : command not found
environment: line 267: : command not found
environment: line 267: : command not found
environment: line 267: : command not found

I am using bash as the shell using to execute this program as shown here
oyedejioyewolemaxwell@oyedejioyewolemaxwell:~$ echo $SHELL
/bin/bash

The same here on Debian unstable. It says that it is installed, but no new profile is seen in the terminal settings. When I try to install second time and choose the same theme, it says that the profile already exists.

I ran into the same issue but I tried it again after adding a new profile in terminal settings and it worked. Not sure why that is and I haven't got the time to investigate further

not sure why its closed as completed, bug is still happening (also on arch linux). for now it can be fixed by creating a new profile, like mentioned above.


02-32s results in no error text coming through

The
errors:
      name: "${name} errors"

Isn't coming through nor is total_runtime_formatted as soon as I moved to 02-32s because the logs showed I was supposed to be using it for version.
It pulled the latest version of the source code if that matters.

Could you increase the log level to VERY_VERBOSE and provide some RAW traffic? I'm interested in these log messages to reproduce the issue locally:
ESP_LOGI(TAG, "Cell info frame (version %d, %d bytes) received", frame_version, data.size());
ESP_LOGVV(TAG, "  %s", format_hex_pretty(&data.front(), 150).c_str());
ESP_LOGVV(TAG, "  %s", format_hex_pretty(&data.front() + 150, data.size() - 150).c_str());

https://github.com/syssi/esphome-jk-bms/blob/main/components/jk_bms_ble/jk_bms_ble.cpp#L467-L469

logs_bmses3_logs.txt
Here you got. Took a while because it crashes Edge with that much data ;)
I'm pretty sure it's JK02_32S because it literally told me that the default isn't right in the logs and it's a newer unit with the push button, heater, and Canbus option.

This value isn't correct?
[16:10:07][V][sensor:043]: 'BMS 5 total runtime': Received new state 18297532.000000
[16:10:07][D][sensor:094]: 'BMS 5 total runtime': Sending state 18297532.00000 s with 0 decimals of accuracy
...
[16:10:02][V][text_sensor:013]: 'Balancer 5 total runtime formatted': Received new state 211d 18h
[16:10:02][D][text_sensor:064]: 'Balancer 5 total runtime formatted': Sending state '211d 18h'

And this value isn't available via MQTT too?
[16:10:02][V][sensor:043]: 'BMS 5 errors bitmask': Received new state 4096.000000
[16:10:02][D][sensor:094]: 'BMS 5 errors bitmask': Sending state 4096.00000  with 0 decimals of accuracy
...
[16:10:02][V][text_sensor:013]: 'Balancer 5 errors': Received new state Cell Overvoltage
[16:10:02][D][text_sensor:064]: 'Balancer 5 errors': Sending state 'Cell Overvoltage'

I'm asking because the log looks good in general. So may be I didn't got the point / understand the issue?

That’s the heltec balancer that’s also attached. It’s bms 5 that doesn’t report errors properly. It does report error mask.

@JohnGalt1717 Could you provide your YAML configuration? I would like to try to replicate your setup.

substitutions:
device_name: bmses3
battery_name: "Battery 5"
battery_id: battery5
name: "BMS 5"
bms1_id: bms5
mac_address1: xxxxx
bal1_id: bal5
bal1_name: "Balancer 5"
mac_address_bal:xxxx
protocol_version1: JK02_32S
external_components_source: github://syssi/esphome-jk-bms@main
esphome:
name: bmses3
friendly_name: BMS Host 3
esp32:
board: esp32-s3-devkitc-1
framework:
type: esp-idf
sdkconfig_options:
CONFIG_COMPILER_OPTIMIZATION_SIZE: y
CONFIG_BT_BLE_42_FEATURES_SUPPORTED: y
CONFIG_BT_BLE_50_FEATURES_SUPPORTED: y
CONFIG_ESP_TASK_WDT_TIMEOUT_S: "10"
external_components:

source: ${external_components_source}
refresh: 0s

api:
ota:
password: !secret esphome_ota_password
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
use_address: ${device_name}.hancocks.email
logger:
level: INFO
web_server:
port: 80
preferences:
flash_write_interval: 0.5h
time:

platform: homeassistant
id: homeassistant_time

esp32_ble_tracker:
scan_parameters:
interval: 500ms
window: 150ms
on_ble_advertise:
then:
- lambda: |-
ESP_LOGI("ble_adv", "  Name: %s", x.get_name().c_str());
ESP_LOGI("ble_adv", "  MAC address: %s", x.address_str().c_str());
ble_client:

mac_address: ${mac_address1}
id: ${bms1_id}
mac_address: ${mac_address_bal}
id: ${bal1_id}

jk_bms_ble:

ble_client_id: ${bms1_id}
throttle: 5s
id: bms0
protocol_version: ${protocol_version1}

heltec_balancer_ble:

ble_client_id: ${bal1_id}
throttle: 5s
id: bal0

binary_sensor:

platform: jk_bms_ble
jk_bms_ble_id: bms0
balancing:
name: "${name} balancing"
charging:
name: "${name} charging"
discharging:
name: "${name} discharging"
online_status:
name: "${name} online status"
platform: heltec_balancer_ble
balancing:
name: "${bal1_name} balancing"
online_status:
name: "${bal1_name} online status"

button:

platform: jk_bms_ble
jk_bms_ble_id: bms0
retrieve_settings:
name: "${name} retrieve settings"
retrieve_device_info:
name: "${name} retrieve device info"
platform: restart
name: "Restart ${name} ESP32"
platform: shutdown
name: "Shutdown ${name} ESP32"
platform: heltec_balancer_ble
retrieve_settings:
name: "${bal1_name} retrieve settings"
id: retrieve_settings_button
retrieve_device_info:
name: "${bal1_name} retrieve device info"
retrieve_factory_defaults:
name: "${bal1_name} retrieve factory defaults"

number:

platform: jk_bms_ble
jk_bms_ble_id: bms0
balance_trigger_voltage:
name: "${name} balance trigger voltage"
cell_count:
name: "${name} cell count"
total_battery_capacity:
name: "${name} total battery capacity"
cell_voltage_overvoltage_protection:
name: "${name} cell voltage overvoltage protection"
cell_voltage_overvoltage_recovery:
name: "${name} cell voltage overvoltage recovery"
cell_voltage_undervoltage_protection:
name: "${name} cell voltage undervoltage protection"
cell_voltage_undervoltage_recovery:
name: "${name} cell voltage undervoltage recovery"
balance_starting_voltage:
name: "${name} balance starting voltage"
voltage_calibration:
name: "${name} voltage calibration"
current_calibration:
name: "${name} current calibration"
power_off_voltage:
name: "${name} power off voltage"
max_balance_current:
name: "${name} max balance current"
max_charge_current:
name: "${name} max charge current"
max_discharge_current:
name: "${name} max discharge current"
platform: heltec_balancer_ble
cell_count:
name: "${bal1_name} cell count"
balance_trigger_voltage:
name: "${bal1_name} balance trigger voltage"
max_balance_current:
name: "${bal1_name} max balance current"
balance_sleep_voltage:
name: "${bal1_name} balance sleep voltage"
balance_start_voltage:
name: "${bal1_name} balance start voltage"
nominal_battery_capacity:
name: "${bal1_name} nominal battery capacity"

sensor:

platform: wifi_signal
name: "WiFi Signal Sensor"
update_interval: 60s

platform: total_daily_energy
name: "${name} Total Charging Energy Today"
power_id: bms_charging_power
unit_of_measurement: kWh
device_class: energy
icon: mdi:counter
accuracy_decimals: 3
restore: true
filters:

multiply: 0.001

platform: total_daily_energy
name: "${name} Total Discharging Energy Today"
power_id: bms_discharging_power
unit_of_measurement: kWh
device_class: energy
icon: mdi:counter
accuracy_decimals: 3
restore: true
filters:

multiply: 0.001

platform: jk_bms_ble
jk_bms_ble_id: bms0
min_cell_voltage:
name: "${name} min cell voltage"
max_cell_voltage:
name: "${name} max cell voltage"
min_voltage_cell:
name: "${name} min voltage cell"
max_voltage_cell:
name: "${name} max voltage cell"
delta_cell_voltage:
name: "${name} delta cell voltage"
average_cell_voltage:
name: "${name} average cell voltage"
cell_voltage_1:
name: "${name} cell voltage 1"
cell_voltage_2:
name: "${name} cell voltage 2"
cell_voltage_3:
name: "${name} cell voltage 3"
cell_voltage_4:
name: "${name} cell voltage 4"
cell_voltage_5:
name: "${name} cell voltage 5"
cell_voltage_6:
name: "${name} cell voltage 6"
cell_voltage_7:
name: "${name} cell voltage 7"
cell_voltage_8:
name: "${name} cell voltage 8"
cell_voltage_9:
name: "${name} cell voltage 9"
cell_voltage_10:
name: "${name} cell voltage 10"
cell_voltage_11:
name: "${name} cell voltage 11"
cell_voltage_12:
name: "${name} cell voltage 12"
cell_voltage_13:
name: "${name} cell voltage 13"
cell_voltage_14:
name: "${name} cell voltage 14"
cell_voltage_15:
name: "${name} cell voltage 15"
cell_voltage_16:
name: "${name} cell voltage 16"
cell_resistance_1:
name: "${name} cell resistance 1"
cell_resistance_2:
name: "${name} cell resistance 2"
cell_resistance_3:
name: "${name} cell resistance 3"
cell_resistance_4:
name: "${name} cell resistance 4"
cell_resistance_5:
name: "${name} cell resistance 5"
cell_resistance_6:
name: "${name} cell resistance 6"
cell_resistance_7:
name: "${name} cell resistance 7"
cell_resistance_8:
name: "${name} cell resistance 8"
cell_resistance_9:
name: "${name} cell resistance 9"
cell_resistance_10:
name: "${name} cell resistance 10"
cell_resistance_11:
name: "${name} cell resistance 11"
cell_resistance_12:
name: "${name} cell resistance 12"
cell_resistance_13:
name: "${name} cell resistance 13"
cell_resistance_14:
name: "${name} cell resistance 14"
cell_resistance_15:
name: "${name} cell resistance 15"
cell_resistance_16:
name: "${name} cell resistance 16"
total_voltage:
name: "${name} total voltage"
current:
name: "${name} current"
power:
name: "${name} power"
charging_power:
name: "${name} charging power"
id: bms_charging_power
discharging_power:
name: "${name} discharging power"
id: bms_discharging_power
temperature_sensor_1:
name: "${name} temperature sensor 1"
temperature_sensor_2:
name: "${name} temperature sensor 2"
power_tube_temperature:
name: "${name} power tube temperature"
state_of_charge:
name: "${name} state of charge"
capacity_remaining:
name: "${name} capacity remaining"
total_battery_capacity_setting:
name: "${name} total battery capacity setting"
charging_cycles:
name: "${name} charging cycles"
total_charging_cycle_capacity:
name: "${name} total charging cycle capacity"
total_runtime:
name: "${name} total runtime"
balancing_current:
name: "${name} balancing current"
errors_bitmask:
name: "${name} errors bitmask"

platform: heltec_balancer_ble
min_cell_voltage:
name: "${bal1_name} min cell voltage"
max_cell_voltage:
name: "${bal1_name} max cell voltage"
min_voltage_cell:
name: "${bal1_name} min voltage cell"
max_voltage_cell:
name: "${bal1_name} max voltage cell"
delta_cell_voltage:
name: "${bal1_name} delta cell voltage"
average_cell_voltage:
name: "${bal1_name} average cell voltage"
cell_voltage_1:
name: "${bal1_name} cell voltage 1"
cell_voltage_2:
name: "${bal1_name} cell voltage 2"
cell_voltage_3:
name: "${bal1_name} cell voltage 3"
cell_voltage_4:
name: "${bal1_name} cell voltage 4"
cell_voltage_5:
name: "${bal1_name} cell voltage 5"
cell_voltage_6:
name: "${bal1_name} cell voltage 6"
cell_voltage_7:
name: "${bal1_name} cell voltage 7"
cell_voltage_8:
name: "${bal1_name} cell voltage 8"
cell_voltage_9:
name: "${bal1_name} cell voltage 9"
cell_voltage_10:
name: "${bal1_name} cell voltage 10"
cell_voltage_11:
name: "${bal1_name} cell voltage 11"
cell_voltage_12:
name: "${bal1_name} cell voltage 12"
cell_voltage_13:
name: "${bal1_name} cell voltage 13"
cell_voltage_14:
name: "${bal1_name} cell voltage 14"
cell_voltage_15:
name: "${bal1_name} cell voltage 15"
cell_voltage_16:
name: "${bal1_name} cell voltage 16"
cell_resistance_1:
name: "${bal1_name} cell resistance 1"
cell_resistance_2:
name: "${bal1_name} cell resistance 2"
cell_resistance_3:
name: "${bal1_name} cell resistance 3"
cell_resistance_4:
name: "${bal1_name} cell resistance 4"
cell_resistance_5:
name: "${bal1_name} cell resistance 5"
cell_resistance_6:
name: "${bal1_name} cell resistance 6"
cell_resistance_7:
name: "${bal1_name} cell resistance 7"
cell_resistance_8:
name: "${bal1_name} cell resistance 8"
cell_resistance_9:
name: "${bal1_name} cell resistance 9"
cell_resistance_10:
name: "${bal1_name} cell resistance 10"
cell_resistance_11:
name: "${bal1_name} cell resistance 11"
cell_resistance_12:
name: "${bal1_name} cell resistance 12"
cell_resistance_13:
name: "${bal1_name} cell resistance 13"
cell_resistance_14:
name: "${bal1_name} cell resistance 14"
cell_resistance_15:
name: "${bal1_name} cell resistance 15"
cell_resistance_16:
name: "${bal1_name} cell resistance 16"
total_voltage:
name: "${bal1_name} total voltage"
temperature_sensor_1:
name: "${bal1_name} temperature sensor 1"
temperature_sensor_2:
name: "${bal1_name} temperature sensor 2"
total_runtime:
name: "${bal1_name} total runtime"
balancing_current:
name: "${bal1_name} balancing current"
cell_detection_failed_bitmask:
name: "${bal1_name} cell detection failed bitmask"
cell_overvoltage_bitmask:
name: "${bal1_name} cell overvoltage bitmask"
cell_undervoltage_bitmask:
name: "${bal1_name} cell undervoltage bitmask"
cell_polarity_error_bitmask:
name: "${bal1_name} cell polarity error bitmask"
cell_excessive_line_resistance_bitmask:
name: "${bal1_name} cell excessive line resistance bitmask"

switch:

platform: jk_bms_ble
jk_bms_ble_id: bms0
charging:
name: "${name} charge"
discharging:
name: "${name} discharge"
balancer:
name: "${name} balance"
emergency:
name: "${name} emergency"
platform: heltec_balancer_ble
balancer:
name: "${bal1_name} balancer"

text_sensor:

platform: jk_bms_ble
jk_bms_ble_id: bms0
errors:
name: "${bal1_name} errors"
total_runtime_formatted:
name: "${bal1_name} total runtime formatted"
platform: heltec_balancer_ble
heltec_balancer_ble_id: bal0
operation_status:
name: "${bal1_name} operation status"
total_runtime_formatted:
name: "${bal1_name} total runtime formatted"
buzzer_mode:
name: "${bal1_name} buzzer mode"
battery_type:
name: "${bal1_name} battery type"

interval:

interval: 30min
then:

button.press: retrieve_settings_button

Okay, issue identified:
  - platform: jk_bms_ble
    jk_bms_ble_id: bms0
    errors:
      name: "${bal1_name} errors"
    total_runtime_formatted:
      name: "${bal1_name} total runtime formatted"
  - platform: heltec_balancer_ble
    heltec_balancer_ble_id: bal0
    operation_status:
      name: "${bal1_name} operation status"
    total_runtime_formatted:
      name: "${bal1_name} total runtime formatted"

Both sensors (Heltec vs JK) using the same name:
      name: "${bal1_name} total runtime formatted"
      name: "${bal1_name} total runtime formatted"

Please use something like
  - platform: jk_bms_ble
    jk_bms_ble_id: bms0
    errors:
      name: "${name} errors"
    total_runtime_formatted:
      name: "${name} total runtime formatted"
  - platform: heltec_balancer_ble
    heltec_balancer_ble_id: bal0
    operation_status:
      name: "${bal1_name} operation status"
    total_runtime_formatted:
      name: "${bal1_name} total runtime formatted"

instead.

That fixed it.  Find and Replace struck.

No problem.  :-)


Icons in sub-children

I know icons in subchildren aren't native to AdminLTE, but I find it a nice addition. Would it be worth submitting the PR to make it work? Or is it considered out-of-scope?
I'm just overriding the macros template in my app/Resources at the minute.
Change is here: https://github.com/avanzu/AdminThemeBundle/compare/master...MartinLyne:patch-1
Edit: Also, how do I put label on this to question?

i like your idea :+1:

I like it too :+1:

That's a good contribution indeed. I think that we could enhance AdminLTE a bit with this kind of enhancements.
@MartinLyne : do you want to create a pull request on your own, or should we merge @sylvaincombes 's one?

Sorry for absence, great, seems @sylvaincombes PR (or my forked repo more likely) suffers the same issue I get whenever I try to modify files via github's editor, I'll make a new branch and edit code/documentation via normal means and make a new PR, see if that works.

Hi! No problem.
The best way to be to:

Clone your fork locally
Sync it
Create a branch
Make your changes, commit, push and create a PR from this branch

This will allow you to be up to date with the master branch and be sure that your PRs will be accepted :)
Thank you for your contribution!

@chteuchteu Yeah it's much easier locally, I guess github doesn't warn you that forked projects are out of sync
Now I update, i notice that there has been a significant change to the way the sidebar nav works in this commit: https://github.com/avanzu/AdminThemeBundle/commit/75c1d75983f701da9d7664a668cad9badaf2b747
Seems that top-level items with no route can no longer host children, does that look like an oversight I should amend, or is it desired restriction? Probably want to drop into child-bearing code if it has a route or it has children? (I'll give it a go)

That's unfortunate indeed... I don't know if it is a desired restriction, but anyways: I don't think that we should stick with this restriction.
Could you give it a try please?

That fix seems to work, I think worst case is we go back to whatever could have happened before, my non-route-with-children examples work okay, I added some top-levels-without-routes-no-children and they display as I think they should.
I'll prep the PR

Thank you for your work, I just merged the PR.

Great :metal: thanks to @MartinLyne @OskarStark @chteuchteu ! (I closed the pull request made from @MartinLyne first patch)

Brilliant! https://www.youtube.com/watch?v=S65ZzffW-Cw

:+1:


CI for Node

Co pipeline

Starts the game with a random player

review ok

how to you review the pull request on behalf of someone else


Data type of CMORizer output is not always 32 bit float

Describe the bug
I have the problem that some NCL functions do not work when input data is saved as 64 bit floats (fatal:Assignment type mismatch, right hand side can't be coerced to type of left hand side), which is sometimes the case for OBS datasets.
I think it would make sense to always write 32 bit float output in all CMORizer scripts. I will implement this.

This is also the case in the CMIP5 data: variables are float32 (NCL float) and coordinates are float64 (NCL double).


Fix panic when calling putCorrelation

When current is has existing tracing context and empty correlation context, calling the go2sky.putCorrelation method will throw a panic.
So when creating the segment context, should check the correlation is empty, if so, need to add the default map.

[x] fix the panic bug.
[x] add a unit test case.

Codecov Report

Merging #95 (6ec2474) into master (fa1294c) will increase coverage by 0.10%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #95      +/-   ##
==========================================
+ Coverage   67.08%   67.18%   +0.10%
==========================================
  Files          14       14
  Lines         641      643       +2
==========================================
+ Hits          430      432       +2
  Misses        171      171
  Partials       40       40

Impacted Files
Coverage Δ

segment.go
91.30% <100.00%> (+0.19%)
:arrow_up:

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 fa1294c...6ec2474. Read the comment docs.


Remove static methods

In order to improve the dotnet standard migration and reduce the risk changes, I want to remove the static methods one by one
First:
Remove public static Toperator -(in Ta)

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 81.603%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2033

Relevant Lines:
2428

💛  - Coveralls

why splitting them can reduce so called risk? what risk are you specifing and how splitting them can reduce them? did you take any special measurement?

why splitting them can reduce so called risk? what risk are you specifing and how splitting them can reduce them? did you take any special measurement?

It's cryptography, we should take care about any change, if the review it's easier, it will be hard to have a mistake

@Jim8y Merge?

Closed in favor of https://github.com/neo-project/Neo.Cryptography.BLS12_381/pull/11


Spotify authorization timeout getting token

What version of Music Assistant has the issue?
2.0.0b80
The problem
Just installed the latest version of the server and am unable to authenticate with spotify.   I've got the container configured with a macvlan network instead of host due to how my network/hosts are set up - macvlan should ostensibly function the same as host though (i.e all ports forwarded)
Confirmed from within the docker container that I can at least hit the auth url that librespot initially tries to use:
root@b1aaedf5c228:/data# curl apresolve.spotify.com
{"ap_list":["ap-gue1.spotify.com:4070","ap-gue1.spotify.com:443","ap-gue1.spotify.com:80","ap-gew4.spotify.com:4070","ap-gae2.spotify.com:443","ap-gew1.spotify.com:80"]}

root@b1aaedf5c228:/data# ping ap-gue1.spotify.com
PING ap-gue1.spotify.com (<IP_ADDRESS>) 56(84) bytes of data.
64 bytes from <IP_ADDRESS>.bc.googleusercontent.com (<IP_ADDRESS>): icmp_seq=1 ttl=57 time=52.9 ms
^C64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=57 time=36.9 ms

How to reproduce
From a fresh install, attempt to login to spotify
Relevant log output
The logs do print "authorized" a number of times after I start the login process.  Not sure how to interpret that:
hass-music-assistant_1       | authorized
hass-music-assistant_1       | authorized
hass-music-assistant_1       | authorized
hass-music-assistant_1       | 2024-01-01 01:39:31.378 ERROR (MainThread) [music_assistant.webserver] [139843333535696] Error handling message: CommandMessage(message_i
d=13, command='config/providers/save', args={'provider_domain': 'spotify', 'values': {'username'<EMAIL_ADDRESS>'password': 'xxx', 'log_level': 'DEBUG'}})
hass-music-assistant_1       | Traceback (most recent call last):
hass-music-assistant_1       |   File "/usr/local/lib/python3.11/site-packages/music_assistant/server/server.py", line 403, in load_provider
hass-music-assistant_1       |     provider = await prov_mod.setup(self, prov_manifest, conf)
hass-music-assistant_1       |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hass-music-assistant_1       |   File "/usr/local/lib/python3.11/site-packages/music_assistant/server/providers/spotify/__init__.py", line 75, in setup
hass-music-assistant_1       |     await prov.handle_setup()
hass-music-assistant_1       |   File "/usr/local/lib/python3.11/site-packages/music_assistant/server/providers/spotify/__init__.py", line 119, in handle_setup
hass-music-assistant_1       |     await self.login()
hass-music-assistant_1       |   File "/usr/local/lib/python3.11/site-packages/music_assistant/server/providers/spotify/__init__.py", line 589, in login
hass-music-assistant_1       |     tokeninfo = await self._get_token()
hass-music-assistant_1       |                 ^^^^^^^^^^^^^^^^^^^^^^^
hass-music-assistant_1       |   File "/usr/local/lib/python3.11/site-packages/music_assistant/server/providers/spotify/__init__.py", line 635, in _get_token
hass-music-assistant_1       |     await librespot.wait()
hass-music-assistant_1       |   File "/usr/local/lib/python3.11/asyncio/subprocess.py", line 137, in wait
hass-music-assistant_1       |     return await self._transport._wait()
hass-music-assistant_1       |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
hass-music-assistant_1       |   File "/usr/local/lib/python3.11/asyncio/base_subprocess.py", line 230, in _wait
hass-music-assistant_1       |     return await waiter
hass-music-assistant_1       |            ^^^^^^^^^^^^
hass-music-assistant_1       | asyncio.exceptions.CancelledError

Additional information
No response
What version of Home Assistant Core are your running
2023.12.4
What type of installation are you running?
Home Assistant OS
On what type of hardware are you running?
Synology NAS

I’m sorry to say that we don’t have the capacity to help users with non standard network installs. The MA requirements are fairly clear. You will have to try and resolve this one elsewhere, feel free to open a discussion and see if anyone else can help or try on our discord server.


Bugfix/handle large policy and metadata collections

Coverage decreased (-0.4%) to 62.068% when pulling 72476d5554a51c8c8758cb9007a2013535a87d91 on bugfix/handle_large_policy_and_metadata_collections into 30c683f3070477034c9a2d6198c90e3a10bceea3 on master.

Coverage decreased (-0.04%) to 62.431% when pulling 3af920bc18c2301dd8bbdd7110d515a622338414 on bugfix/handle_large_policy_and_metadata_collections into 30c683f3070477034c9a2d6198c90e3a10bceea3 on master.


CameraRecticleAnimator shows utmost animation box before re-starting animation

in barcode scanning example, i observe that utmost animation box displays before starting animation from initial state (rectangle box to place barcode).
Is this known issue? or i am missing something.
Appreciate any help!

@rammohanmishra this project has been moved to https://github.com/googlesamples/mlkit/tree/master/android/material-showcase
You may want to open this issue there.

thank you.
I have raised it on the given repository.
Best Regards,
Raam Mohan Mishra
On Fri, Jul 10, 2020 at 2:04 AM Rosário Pereira Fernandes <
<EMAIL_ADDRESS>wrote:

@rammohanmishra https://github.com/rammohanmishra this project has been
moved to
https://github.com/googlesamples/mlkit/tree/master/android/material-showcase
You may want to open this issue there.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/firebase/mlkit-material-android/issues/51#issuecomment-656337826,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADBRE6IFLY6HYJS3PHZP6YLR2YSV3ANCNFSM4OVAX3EA
.


kube-lego-nginx ingress ends up in wrong namespace

I have pretty much the example deployment, version 0.1.3
Recently I noticed that I had two ingresses called kube-lego-nginx.
One of them (a old one) in the kube-lego namespace
Another new one in the default namespace. This one's age indicates it appeared on the same day I upgraded to 0.1.3.
The result was a) "duplicate routes" warnings by the nginx ingress controller and b) the cert validation failing, because the wrong route took effect, and it was pointing to a kube-lego service that didn't exist in the default namespace.

My deployment file, like in the example, used to say:
    - name: LEGO_NAMESPACE
      valueFrom:
        fieldRef:
          fieldPath: metadata.namespace

I changed it to point to "kube-lego" explicitly. That fixed it.

I am having the same issue but I cannot find out why.  The pod is configured correctly (the same as in the GCE example) but the metadata.namespace and the status.podIP are not being picked up on.


Issue Inbox

This is a list of possible bugs/ideas/whatever where someone is not sure of this is a issue worth.
If things get more concrete, they can be moved to an own issue.
ToDo:

retry without snapshot boot if "./mw.py start" or "./mw.py step" failed?
use docker stack for production-ready deployment?

@gh0st42 @lampep what do you think are the next features we should integrate into MiniWorld? Hopefully we can collect them here, just List what you think is missing or what you want to have changed etc.

All features I can think of:

container virtualization
wifi virtualization including link quality impairment (python netlink?)
android virtualization and Setting Position Data inside the VMs (with adb)
even more faster network switching by replacing ebtables with nftables

Maintenance:

more docu
easier usage (provide docker container)


test improvements

Coverage remained the same at 100.0% when pulling 7e4c21e63c2309053ab2f784621ded447c15683d on proto into 5ea19ed44ffbd1e1f8f360cb8b4a60857eeb22b6 on main.


Bug fix in namespace in views

PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows our guidelines:
[x] Tests for the changes have been added (for bug fixes / features)
[x] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Other... Please describe:

What is the current behavior?

Issue Number: N/A
What is the new behavior?

Corrected issues in the namespace in views
User and post views were organized in folders
In addition to creating master template view
Fixed tag name of config in DashboardServiceProvider

Does this PR introduce a breaking change?
[ ] Yes
[x] No

Other information

@oliuz
If you see ServiceProvider i changet the old view namespace laravelDash by yal\laraveldash
$this->loadViewsFrom(__DIR__ . '/../../resources/views', '\yal\laraveldash');

@oliuz
If you see ServiceProvider i changed the old view namespace laravelDash by yal\laraveldash
$this->loadViewsFrom(__DIR__ . '/../../resources/views', '\yal\laraveldash');

Hi @getspooky
Yes, but that namespace gives a syntax error and is due to the backslash.


customStyleMap can not zoom in to level 22

Currently, we discovered that when using customStyleMap, when setMapTypeId, the print zoom cannot be larger than 20.
But if you remove customStyleMap, you can zoom in to 22.
Is there any way to use customStyleMap and zoom in 22?

If you would like to upvote the priority of this issue, please comment below or react on the original post above with :+1: so we can see what is popular when we triage.
@thanhnghic4 Thank you for opening this issue. 🙏
Please check out these other resources that might help you get to a resolution in the meantime:

Check the issue tracker - bugs and feature requests for Google Maps Platform APIs and SDKs
Open a support case - Get 1:1 support in Cloud Console.
Discord - chat with other developers
StackOverflow - use the google-maps tag

This is an automated message, feel free to ignore.

@wangela thank for response, seem this was not be fix🥲

I'll close this as this doesn't seem to be related to the react-wrapper component at all.
Can you explain what this customStyleMap is and what exactly you are trying to do?
I would like to help by pointing you to a better place to ask your question, but I can't even find anything referencing a customStyleMap. Maybe you can try asking this question on discord or stack-overflow as indicated in @wangela's comment above?

@usefulthink  since security issue, I can't share source code, but it's something like this:
create map function
    const createMap = async (): Promise<google.maps.Map> => {
        // Request needed libraries
        const { Map } = (await google.maps.importLibrary('maps')) as google.maps.MapsLibrary;

        // Create map
        return new Map(mapElementRef.current, {
            mapId: process.env.REACT_APP_GOOGLE_SIMPLE_MAPS_ID,

            ....
        });
    };

this.map = createMap()

then
        this.map .setMapTypeId(styledMapId);  //  styledMapId is in 'detail, simple, roadmap,satellite...'

after this function setMapTypeId is called, Map lock limit zoom to 20.


Provide custom layout

This PR lets the builder to accept a custom layout id to inflate.
However, this still means that the child elements of the custom layout has to have the same ids as the one from library

When I'm trying your sample project I get a weird behavior. I get a completely different flashbar as you call in your iconAdvanced() method. Neither title, text, progress bar and gravity match with your custom view definition.

Your builder code:
    private fun iconAdvanced(): Flashbar {
        return Flashbar.Builder(this)
                .gravity(Flashbar.Gravity.TOP)
                .title("Hello World!")
                .message("You can show a default icon on the left side of the with view.")
                .showIcon()
                .layoutId(R.layout.flash_bar_view_custom)
                .enableSwipeToDismiss()
                .build()
    }

Looks good 👍


Support for mobile?

Hey, is there support for mobile browsers too? I've been trying ontouchstart="party.confetti(this)" onclick="party.confetti(this)" and it is not working.

The library should work just fine on mobile devices, last time I checked the samples on the website were functional on mobile. Can you elaborate on "not working", are there any console errors?

@JeswinSunsi Is this resolved? Did you manage to get it working on mobile?


Should we add cheats.rs?

Hello,
Should we add cheats.rs to lborb even though it is not a book?

Is not in mdBook format. Will not be added.


New coverage threshold

This PR has been merged into update-dependencies and tagged as 2.0.0-alpha-202308301149. Thanks for your contribution!


Error executing action 'start'

When running this cookbook as part of a vagrant up provisioning step I am getting the following error:
================================================================================
Error executing action start on resource 'runit_service[kibana]'
Mixlib::ShellOut::ShellCommandFailed
Expected process to exit with [0], but received '1'
---- Begin output of /sbin/sv start /etc/service/kibana ----
STDOUT: warning: /etc/service/kibana: unable to open supervise/ok: file does not exist
STDERR:
---- End output of /sbin/sv start /etc/service/kibana ----
Ran /sbin/sv start /etc/service/kibana returned 1
This will then of course give me a return status of a 1 in my wrapper recipe which we have hooked into Jenkins for a continuous integration build and turn the build red.  If I remove ":start" out of the "action" call in the service_runit.rb file the build will complete successfully and the build goes green and kibana is up and running without any other intervention.
Has anybody else experienced this issue?  Or should I scrap runit and use something else?
Thanks!

There are few issues I'm facing with runit (especially in docker):
https://github.com/hw-cookbooks/runit/issues/100
https://github.com/hw-cookbooks/runit/issues/60 (https://github.com/hw-cookbooks/runit/issues/60#issuecomment-118453623)
Currently, I'm searching for way to fix such issues somehow..

I'm having similar, but I'm pretty sure its because we are now on Centos7 with now uses systemd.. so we don't really need runit.

@jbagel2 , cookbook has been specially divided into parts for your case: wrap it, but not use default recipe. Use user, install, configure, and your custom service_whatever recipe.


from .basis import *

https://github.com/kinnala/scikit-fem/blob/84ef5ad81e4d4fd7228f829de8b721c7e648b6c6/skfem/assembly/__init__.py#L54-L56
should be changed to
from .basis import *

My rational is that if you write a new Basis, you already have to update basis/__init__.py and that should be enough. I don't see a reason to import something in basis/__init__.py that won't be included in the skfem namespace.
And it is in line with other skfem code:
https://github.com/kinnala/scikit-fem/blob/84ef5ad81e4d4fd7228f829de8b721c7e648b6c6/skfem/__init__.py#L3-L7
Can I roll that change into https://github.com/kinnala/scikit-fem/pull/851? Or is there a reason you avoided it in assembly/__init__.py?

Oh, geez... and you have
https://github.com/kinnala/scikit-fem/blob/84ef5ad81e4d4fd7228f829de8b721c7e648b6c6/skfem/assembly/__init__.py#L92-L108
So it actually takes lots of edits to get a new basis in. I wonder if this is from overuse of __all__...

I fully acknowledge the overuse of __all__. However, I'm personally dependent on this behavior because I do lots of live coding using this package (for students, colleagues, during presentations) so I rely on the commands being short and fast to type.
Doing wildcard imports inside the library is of course a good idea if it reduces the LOC, and mypy and flake8 don't start whining about it. I think those #noqa comments have been added to satisfy flake8?

Sorry, I didn't mean to criticize the use from scipy import *. I meant the default behavior of python is to export everything that doesn't begin with _. When I said "overuse of all" I meant that in most places I think you can just not define it, and python will do what you want and the code will be easier to maintain. Try it and see :)
I see __all__ as a way to restrict what things come in from an import, or I guess force the inclusion of something starting with _. But since you're using submodules anyway, you already have a natural place to enumerate which things are exported... the __init__.py files of the submodules.

Test-passing example of this for assembly/__init__.py in #851

Finished off the rest of the __all__'s in #851. Let me know if you want me to revert it.


Feature Request: Passing result from one job into another

I was wondering if you would be open to adding a feature (or would consider a PR) for passing the result from one job into the next on a job pipeline?

Hmm, what use cases do you have in mind?


LV2 atoms are not portable between architectures with different endianess

From LV2 spec:
Each Atom type defines a binary format for use at runtime, but also a serialisation that is natural
to express in Turtle format. Thus, this specification defines a powerful real-time appropriate
data model, as well as a *portable* way to serialise any data in that model. This is particularly
useful for inter-process communication, saving/restoring state, and describing values in plugin data files.

If we try to send an atom POD from LE architecture to the BE architecture, we'll get nothing good. OSC protocol solves this issues by just specifying that all data should be stored in big-endian format. LV2's forge and parse headers don't take any considerations about endianess of the architecture when encoding/decoding PODs.

If we try to send an atom POD from LE architecture to the BE architecture, we'll get nothing good.

Well, you cannot share POD between machines without doing some serialization.
Atoms are meant to be shared between host/plugin and/or plugin/plugin. Host and plugins will run on the same machine in 99.999% of cases.
In the 0.001% of cases where you want atoms to cross machines, just put in a serialization step (that's the host's job). It makes no sense to route Atoms in an endianness-agnostic way on the very same machine. There's just too much overhead without any gain at all.

OSC protocol solves this issues by just specifying that all data should be stored in big-endian
format.

OSC is predominantly transfered via UDP/TCP. As it is involved in networking, it needs to handle endianness, of course. Again: Atoms are transferred between host/plugin or plugin/plugin. There's no change in endianness expected there.

LV2's forge and parse headers don't take any considerations about endianess of the
architecture when encoding/decoding PODs.

If you have to cross an endianness barrier, use a serializer like sratom [1] which serializes to turtle.
In synthpod [2] I use a binary serializer [3] with optional endianness switch.
[1] http://drobilla.net/software/sratom
[2] https://git.open-music-kontrollers.ch/lv2/synthpod/
[3] https://git.open-music-kontrollers.ch/lv2/netatom.lv2/

Indeed, this is intentional.  The OSC approach would be a mistake in plugins, because then you would have to do a bunch of endian nonsense in realtime (we would also remove that rule if there's ever an LV2 OSC extension for the same reason).


Inline scripts

As well as external resources (files), it is often useful to manage inline resouces (scripts) at the same time.
For example, ZendFramework offers this feature via its headScript->appendScript() and headScript->appendFile() methods.  I have coded something similar in many projects.
Translated to stolz/assets, it would look something like this:
/* load the libraries */
Asset::addJs('jquery.js');
Asset::addJs('jquery.widget.js');
/* use the libraries */
Asset::addInlineJs('jQuery("#abc").widget();');

When you come to render the data, you would get this:
<script src="asset-pipeline.js"></script>
<script>jQuery("#abc").widget();</script>

We collect the inline scripts, and render them after the external scripts.
Does this sort of feature have a place in this project?

Hello, in laravel 5 where I put the code?
thank you in advance
class Assets extends \Stolz\Assets\Manager {
protected $inline_js = '';
public function addInlineJs($js) {
    $this->inline_js .= '<script>' . $js . '</script>';
}

public function js($attributes = null) {
    return parent::js($attributes) . $this->inline_js;
}

public function resetJs() {
$this->inline_js = '';
return parent::resetJs();
}

}

@erickmonteiro, you can put it anywhere you want as long as the place is listed in your composer.json autoload section and you use the right namespace .
Since in L5 the app directory is autoloaded with psr-4 you could put it in app/Assets/ directory and use the App\Assets namespace.
If you still want to use the Assets facade with your new functionality then you will need to use a custom service provider. You can extend the official one and change the 'stolz.assets' binding to return an instance of your class i.e.:
return new \App\Assets\Manager($app['config']['assets']);

Is this something incorporated into the library yet, or do we still need to extend it as shown here? Being able to mix file and URL-based assets with in-line JS is an incredibly usefult feature, and a must-have for my general use (how other's mileage varies, I don't know).

@judgej I do this via View::composer

@hotrush what part of the problem does the View::composer solve? It sounds interesting, but so far as I can see, it is a technique that avoids the need to fetch a value in a controller (or a parent view) and explicitly pass it into a view. I'm guessing it is how the $errors collection is always available in all views, all the time. Presumably you have something that collects inline JS from various places, and makes it available for binding to some or other view?

@judgej in my case i need to pass some data from php to javascript (but it can be modified as you want).
Here an example:
In my BaseController i have next:
/**
 * Data that will be forward to layout as js variables
 * Key => Value array
 * Array to json convert manually
 * @var array
 */
protected $scriptComposer = array();

in setupLayout() method of this controller i have
// inject inline script into layout
View::composer('script-composer', function($view) {
    $view->with('scriptComposer', $this->scriptComposer);
});

in layout view
@include('script-composer')
{{ Assets::js() }}

script composer view (it may bind key->value data, but can be modified for your purposes)
@if(isset($scriptComposer) && !empty($scriptComposer))
<script type="text/javascript">
    @foreach($scriptComposer as $key=>$value)
        var {{ $key }} = {{ $value }};
    @endforeach
</script>
@endif

and in controllers method i do next
$this->scriptComposer['userID'] = 123;

Thanks, that makes sense. So here the controllers throw together key/value data, and the View::composer is used to make sure that key/value data is available to any JS running on the page. Your static JS assets then know what data to look for, and how to use it.
I think I would want to pass in fragments of JS too - more than just variables - and some of those fragments would come from sub-views within the page, but this would certainly work for that too.

+1
With a little modification :
Translated to stolz/assets, it would look something like this:
/* load the libraries */
Asset::addJs('jquery.js');
Asset::addJs('jquery.widget.js');
/* use the libraries */
Asset::addInlineJs('jQuery("#abc").widget();');

When you come to render the data, you would get this:
<script src="asset-pipeline.js"></script>

with <script>jQuery("#abc").widget();</script> at the end of asset-pipeline.js file

@Nuranto please take a look at Laravel Blade stacks. They allow you to accomplish the inline assets feature very easily.
https://laravel.com/docs/5.6/blade#stacks


Integrate contivModel to netmaster

This adds basic support for contivModel to netmaster.

Bring in contivModel from objmodel.
Integrate tenant and network creation with contivModel.
Does not remove old REST endpoints from net master and netdcli still goes thru old REST interfaces

Will re-submit this pull request with most recent changes..


load pre-training weights to the model

Thanks for your insightful work.
I read that VGT has better performance with pre-training on WebVideo. I would like to know how to run the code to load the pre-trained weights you provide in WebVideo0.18M.

Thanks for the interest. You can uncomment the "CM_PT" and “pretrained_path” to the pretrained weight in the shell scripts next_train.sh

Hi,
In L496-500 of vqa_model.py, I realized that graph_trans_n (with cm pretrain) and graph_trans are initialized with the same config. Could you please let me know how the cm pretrained weights are loaded?

Hi,
Can you let me know where I can get accessed to the webvideo0.18M dataset?

Hi, you need to download the raw data (train&val) from WebVid2.5M (provide links only). The videoid of the subset (0.18M) used in this paper can be found here.  You can map the videoid to the 2.5M file and get the URLs. Note that we can only provide the links. The raw video and the extracted feature are really large, and we are unable to share it online.


"Undefined" function on playlist, seems to be the autoplay

The new iteration of the Youtube playlist and dev build 474 (has been an issue with previous dev builds also) results in this button being labelled as "Undefined". It seems to be the autoplay toggle button to continue playing videos in the playlist.

Already reported in #1395, try enabling Prevent playlist auto-play for the moment, I suspect the "undefined" is the result of YTC forgetting to to remove the button once the option is disabled.


HBASE-22799 Generate CHANGES.md and RELEASENOTES.md for 2.1.6

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

0
reexec
78
Docker mode activated.

_ Prechecks _

+1
dupname
0
No case conflicting files found.

+1
@author
0
The patch does not contain any @author tags.

_ branch-2.1 Compile Tests _

_ Patch Compile Tests _

+1
whitespace
0
The patch has no whitespace issues.

_ Other Tests _

+1
asflicense
22
The patch does not generate ASF License warnings.

188

Subsystem
Report/Notes

Docker
Client=19.03.1 Server=19.03.1 base: https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-491/1/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/491

Optional Tests
dupname asflicense

uname
Linux 2c9eedcdb871 4.4.0-154-generic #181-Ubuntu SMP Tue Jun 25 05:29:03 UTC 2019 x86_64 GNU/Linux

Build tool
maven

Personality
/home/jenkins/jenkins-slave/workspace/HBase-PreCommit-GitHub-PR_PR-491/out/precommit/personality/provided.sh

git revision
branch-2.1 / e27ef92e3f

Max. process+thread count
47 (vs. ulimit of 10000)

modules
C: . U: .

Console output
https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-491/1/console

versions
git=2.11.0 maven=2018-06-17T18:33:14Z)

Powered by
Apache Yetus 0.10.0 http://yetus.apache.org

This message was automatically generated.


Alien Invader Game

Fixes #323
o/p in folder

@TusharAMD please merge this

@TusharAMD I have sent this PR for 2 days now, please merge it


Import Nash's qtilt

[ ] Import library
[ ] Add to credits under Nash

Becuz qtilt makes walking look purdy.

Not adding qtilt for now (will reopen later if needed) but did import SidDoyle's RealAim


Does Emplace() guarantee emplacing unique value?

Hi @Wsm2110 ,
I noticed that in the Get, Update, Remove, Contains methods, we loop through the metadata until we find an empty slot
 if (Vector128.Equals(source, _emptyBucketVector).ExtractMostSignificantBits() > 0)
whereas in Emplace, AddOrUpdate and GetOrUpdate we check for both empty or tombstone
mask = source.ExtractMostSignificantBits();
I have the following questions about the algorithm:

Why do we check only for empty slot in the first case?
When we Emplace, we don't loop until we find an empty slot (-128). Does that mean that we can potentially add a duplicate if we find a tombstone first and put the value at that index?

Hi mate,

Basically "empty" marks the end of a probchain. There is simply no need to go further.
Havent looked at the code, but given a set of hashcollissions which hash to the same bucket (it might be possible)

Hi mate,

Basically "empty" marks the end of a probchain. There is simply no need to go further.
Havent looked at the code, but given a set of hashcollissions which hash to the same bucket (it might be possible)

Is this by design? Because I think this could be a problem for GetOrUpdate where we should add only if the key is not present. And I believe the code would check a whole vector and if the there's no h2 match in that vector, but there's a tombstone it will check no further and will insert the value at that tombstone
https://github.com/Wsm2110/Faster.Map/blob/0becfbab225715671a83d4f330cc735957fccd36/src/DenseMap.cs#L466-L486

Yes, this is intentional. After reviewing it in detail, it’s clear that adding duplicate values can occur, but only under specific conditions:
If the existing entry is located in a second probe group while the tombstone is in the first group, and we only compare the first group if the h2 hash matches. If this check fails and a tombstone is encountered, we skip comparing of the second group, even though it may contain a matching entry. Not sure if this makes sense.... Hence a duplicate is possible
This happens because we don’t traverse the entire probe chain and add whenever we encounter a tombstone.
Ill add a fix when i have so spare time on my hands :)

fixed


Combobox does not scroll to selected item

Steps to reproduce:

Select an item from combobox.
Open combobox by click toggle button.

See the attachment! Do you need a PR?

This sounds like a nice feature to add! Thanks for the suggestion @7c78, and yes – PRs are definitely welcome!! 👍

Sorry @ukita, If you’re working on this


Fix axios vulnerability

Fixes #minor
Description
Component Governance: CVE-2021-3749, severity high
https://dev.azure.com/FuseLabs/SDK_v4/_componentGovernance/112465/alert/5646749?typeId=4476135
"axios is vulnerable to Inefficient Regular Expression Complexity"
Specific Changes
Upgrade axios from 0.21.1 to 0.21.2

Might need to run yarn again to update the lock file, though the semver tilde operator might make it unnecessary.


ci: Try again to use latest google-cloud-sdk rpm

build -366 was problematic, there is now a -369 build, let's see if it
works better.
I'm filing this PR to get CI to run against it.

/unhold

/cherry-pick dev


[Task]: [Performance] Re-calculate positions only for sibling entities.

After any widget operation, re-calculate positions only for sibling entities of affected widgets / layouts.

Hey @prsidhu  is this issue still available to work on?


Provider to accept third party access token

We need to access our panorama IP via a third-party application URL (luminate-sec).
This is a security requirement and currently we are unable to configure the provider in such a way we can access the panorama's behind the luminate URL
e.g -
**provider "panos" {
  alias              = "standalone"
  logging            = ["send", "receive"]
  hostname           = "panorama.****.luminatesec.com"
  username           = "admin"
  password           = *****
  verify_certificate = false
}**

We noticed URL is redirected to luminate and it needs an additional access token
**│ Error: Error unmarshaling into provided interface: XML syntax error on line 18: element <meta> closed by </head>
│
│   with provider["registry.terraform.io/paloaltonetworks/panos"].standalone,
│   on provider-panos.tf line 10, in provider "panos":
│   10: provider "panos" {**

Describe the solution you'd like
provide an additional custom token to access luminate
**provider "panos" {
  alias              = "standalone"
  logging            = ["send", "receive"]
  hostname           = "panorama.****.luminatesec.com"
  username           = "admin"
  password           = *****
  verify_certificate = false
  custom_access_token = ****   <-------- solution
}**

Describe alternatives you've considered
we have used the IP address but this works only in segregated secured VPC and only solution we can use luminate URL when accessing from outside network.
Additional context
This will affect any local builds as we cannot access these instances without going through the luminate

This is how luminate access token is generated
**curl -X POST -vvv https://api.****.luminatesec.com/v1/oauth/token -u ******:*********
**{"access_token":"****************************","expires_in":3600,"scope":"email profile","token_type":"Bearer"}**
we use this access_token to gain access to any instance secured by luminate.

Is the requirement to include an Authorization header in every HTTP request? Or are you looking for support of oauth token generation as well?

Is the requirement to include an Authorization header in every HTTP request? Or are you looking for support of oauth token generation as well?

Hi @btorresgil  no we don't need the support of generating auth token, and yes the requirement is to include a custom header that we would use in every HTTP request for authorization,  we need to pass the Auth token to the provider (luminate token).
-H "Luminate-Token
example request -
curl -i -X POST \
   -H "Content-Type:application/json" \
   -H "Luminate-Token:****" \
'https://panorama-dev-web-primary.*****.luminatesec.com/api/?type=op&cmd=%3Cshow%3E%3Cdevices%3E%3Call%3E%3C%2Fall%3E%3C%2Fdevices%3E%3C%2Fshow%3E&key=*******'

Sending additional HTTP headers is already supported via the additional_headers provider block parameter, unless I'm misunderstanding something...?
https://registry.terraform.io/providers/PaloAltoNetworks/panos/latest/docs#additional_headers


Some ideas to get discussion going on how to improve FIRs

What's in the PR is one person's view of how the process could work, think this PR needs input/markdown from others (notably @nguyer @awrichar) before it could be merged

Replaced by https://github.com/hyperledger/firefly-fir/pull/6, which is into main. Sorry about that.


Make use a valid clusterPermissions rule verb

Repeat of https://github.com/operator-framework/operator-lifecycle-manager/pull/499 because it got overwritten somehow

/test e2e-aws

@ecordell pls /retest, seems this merge is blocked on it, thanks!


New counter tutorial part 3: using a channel for logs

Based on discussion on Discord, this is a good idea for a section in the counter tutorial.

A stub of this is at https://github.com/ratatui-org/ratatui-website/tree/jm/counter-app-events/code/counter-app-events
TODO - change the implementation of the logging to use an mpsc::Channel instead of a shared Vec. and simplify the event idea.
Relevant Discord link: https://discord.com/channels/1070692720437383208/1072907135664529508/1218061222365237258


hello

no ban account?

my alt is currently ar38, no bans so far.

my alt is currently ar38, no bans so far.

Will there be an Update for 1.6?

my alt is currently ar38, no bans so far.

Will there be an Update for 1.6?

there is no need to, still working

suppose you get a first offense ban, would it be a 24hr ban or?

suppose you get a first offense ban, would it be a 24hr ban or?

honestly no idea, haven't have a case yet, could be a week or a month


Use node extract on a web page where authentication is needed

Hi everyone,
I'd like to use node-red in order to extract information from a website. Kinda simple, but the difficulty for me is that you have to login on this website if you want an access to the useful information.
Basically, when I want to send a http request to the web page, I'm redirected in the  https login page.
There is the problem, I don't know how to tell node-red to use my login informations.
I tried to understand how the option "enable secure (ssl/tls) connection" of the http request node works but I'm kinda lost with that.
Any idea ?

Hi, thanks for raising an issue.
If you check out our contribution guidelines you'll see we prefer to handle this sort of thing on the mailing list, slack team or you could ask a question on Stack Overflow and tag it node-red. That way the whole Node-RED user community can help, rather than rely on the core development team.
Thanks!


Multipart file upload

Hi,
Can you give an example for file uploading? I'm also curious about one thing, how to use query and mutation in postman?
Thanks

It's not supported on the current version as everything has to be json but it will hopefully be supported in the near future.


How to use hiredis in thread environments?

I see you say RedisContext and RedisAsyncContext are not thread-safe -- how can I use non-threadsafe code in a threaded environment?  Do I simply create/destroy RedisContext in a mutex?  That doesn't sound like the right path, but maybe I'm wrong?

hiredis does no locking internally. So either you wrap a single context in a Mutex (or some other lock) or use a context per thread.

Thank you.  And what about eredis which claims to be thread-safe but has significantly fewer stars, forks, and watchers?

No idea. I don't use it. You should ask the maintainers there.

when I use a context per thread, redisConnect also crashes, can you help me?
such codes are using by several threads
redisContext* redis = redisConnect(RedisIP, nPort);
redisReply reply = (redisReply)redisCommand(redis, "set hello 2023");
freeReplyObject(reply);
redisFree(redis);when I use a context per thread, redisConnect also crashes, can you help me?