[web-components]: prevent custom element registry errors

Problem
As seen in issues like #9330, extending from classes that have used the @customElement decorator from the LitElement library can cause errors like the following:
Uncaught DOMException: Failed to execute 'define' on 'CustomElementRegistry': the name "dds-button-expressive" has already been used with this registry

This is because the decorator calls customElements.define() using the provided name string. Extending these classes causes namespace collisions when that method is called multiple times.
Proposed Resolution
Separate component class definition and customElements registrations by adopting a base class model, where the component behaviors are authored in the base class (e.g. DDSButtonExpressiveBase), and the custom element registration is handled by an extending class. For example:
export class DDSButtonExpressiveBase extends FocusMixin(StableSelectorMixin(LitElement)) {
  ...
}

@customElement(`${ddsPrefix}-button-expressive`)
class DDSButtonExpressive extends DDSButtonExpressiveBase {}

export default DDSButtonExpressive;

@customElement(`${ddsPrefix}-button-group-item`)
class DDSButtonGroupItem extends DDSButtonExpressiveBase {
}

Affected Components
packages/web-components

[ ] class DDSBackgroundMedia extends DDSImage {
[ ] class DDSButtonGroupItem extends DDSButtonExpressive {
[ ] class DDSCalloutLinkWithIcon extends DDSLinkWithIcon {
[ ] class DDSCalloutQuote extends DDSCalloutMixin(DDSQuote) {
[ ] class DDSCalloutWithMediaCopy extends DDSContentBlockCopy {
[ ] class DDSCalloutWithMediaImage extends DDSImage {
[ ] class DDSCalloutWithMediaVideo extends DDSVideoPlayerContainer {
[ ] class DDSCardFooter extends DDSLinkWithIcon {
[ ] class DDSCard extends StableSelectorMixin(BXLink) {
[ ] class DDSImageLogo extends DDSImage {
[ ] class DDSCardGroupCardLinkItem extends DDSCardLinkCTA {
[ ] class DDSCardGroupItem extends DDSCardCTA {
[ ] class DDSCardInCardImage extends DDSImage {
[ ] class DDSCardInCard extends StableSelectorMixin(DDSCardCTA) {
[ ] class DDSCardLinkHeading extends DDSCardHeading {
[ ] class DDSCardLink extends DDSCard {
[ ] class DDSCardSectionCarousel extends DDSContentSection {
[ ] class DDSCardSectionImages extends StableSelectorMixin(DDSContentSection) {
[ ] class DDSCardSectionOffset extends StableSelectorMixin(DDSContentBlock) {
[ ] class DDSCardSectionSimple extends StableSelectorMixin(DDSContentSection) {
[ ] class DDSContentBlockCopy extends StableSelectorMixin(DDSMarkdown) {
[ ] class DDSContentBlockCardStatic extends StableSelectorMixin(DDSContentBlock) {
[ ] class DDSContentBlockCards extends StableSelectorMixin(DDSContentBlock) {
[ ] class DDSContentBlockHeadlinesItem extends StableSelectorMixin(DDSContentItem) {
[ ] class DDSContentBlockHeadlines extends StableSelectorMixin(DDSContentBlock) {
[ ] class DDSContentBlockHorizontal extends DDSContentGroup {
[ ] class DDSContentBlockMediaContent extends StableSelectorMixin(DDSContentGroup) {
[ ] class DDSContentBlockMedia extends DDSContentBlock {
[ ] class DDSContentBlockMixed extends DDSContentBlock {
[ ] class DDSContentBlockSegmented extends DDSContentBlock {
[ ] class DDSContentBlockSimple extends StableSelectorMixin(DDSContentBlock) {
[ ] class DDSContentGroupCopy extends StableSelectorMixin(DDSMarkdown) {
[ ] class DDSContentGroup extends StableSelectorMixin(DDSContentBlock) {
[ ] class DDSContentGroupBanner extends StableSelectorMixin(DDSContentGroup) {
[ ] class DDSContentGroupCardsItem extends StableSelectorMixin(DDSCard) {
[ ] class DDSContentGroupCards extends DDSContentGroup {
[ ] class DDSContentGroupHorizontal extends DDSContentBlockHorizontal {
[ ] class DDSContentGroupPictograms extends DDSContentGroup {
[ ] class DDSContentGroupSimple extends StableSelectorMixin(DDSContentGroup) {
[ ] class DDSContentItemCopy extends StableSelectorMixin(DDSMarkdown) {
[ ] class DDSContentItemHorizontalMediaFeatured extends DDSContentItem {
[ ] class DDSContentItemHorizontalMediaVideo extends DDSVideoPlayerContainer {
[ ] class DDSContentItemHorizontalMedia extends HostListenerMixin(DDSContentItem) {
[ ] class DDSContentItemHorizontal extends DDSContentItem {
[ ] class DDSContentSectionCopy extends StableSelectorMixin(DDSMarkdown) {
[ ] class DDSButtonCTA extends VideoCTAMixin(CTAMixin(DDSButtonGroupItem)) {
[ ] class DDSCardCTAFooter extends VideoCTAMixin(CTAMixin(DDSCardFooter)) {
[ ] class DDSCardCTAImage extends DDSImage {
[ ] class DDSCardCTA extends VideoCTAMixin(CTAMixin(DDSCard)) {
[ ] class DDSCardLinkCTA extends VideoCTAMixin(CTAMixin(DDSCardLink)) {
[ ] class DDSFeatureCTA extends VideoCTAMixin(CTAMixin(DDSFeatureCard)) {
[ ] class DDSLinkListItemCardCTA extends DDSCardCTA {
[ ] class DDSLinkListItemCTA extends DDSTextCTA {
[ ] class DDSTextCTA extends VideoCTAMixin(CTAMixin(DDSLinkWithIcon)) {
[ ] class DDSCTABlockItem extends StableSelectorMixin(DDSContentItem) {
[ ] class DDSCTABlock extends StableSelectorMixin(DDSContentBlock) {
[ ] class DDSCTASection extends StableSelectorMixin(DDSContentSection) {
[ ] class DDSExpressiveModalBody extends StableSelectorMixin(BXModalBody) {
[ ] class DDSExpressiveModalFooter extends StableSelectorMixin(BXModalFooter) {
[ ] class DDSExpressiveModalHeader extends StableSelectorMixin(BXModalHeader) {
[ ] class DDSExpressiveModalHeading extends StableSelectorMixin(BXModalHeading) {
[ ] class DDSFeatureCardFooter extends DDSCardFooter {
[ ] class DDSFeatureCard extends StableSelectorMixin(DDSCard) {
[ ] class DDSFeatureCardBlockLargeFooter extends DDSFeatureCardFooter {
[ ] class DDSFeatureCardBlockLarge extends StableSelectorMixin(DDSFeatureCard) {
[ ] class DDSFeatureCardBlockMedium extends DDSFeatureCard {
[ ] class DDSFeatureSectionCardLink extends DDSCardCTA {
[ ] class DDSFeatureSection extends StableSelectorMixin(DDSFeatureCard) {
[ ] class DDSFilterGroupItem extends StableSelectorMixin(BXAccordionItem) {
[ ] class DDSFilterGroup extends StableSelectorMixin(BXAccordion) {
[ ] class DDSFilterModalButton extends StableSelectorMixin(BXModalFooterButton) {
[ ] class DDSFilterModalFooter extends StableSelectorMixin(BXModalFooter) {
[ ] class DDSFilterModalHeading extends StableSelectorMixin(BXModalHeading) {
[ ] class DDSComboBox extends DDSDropdown {
[ ] class DDSDropdown extends BXDropdown {
[ ] class DDSFooterNavItem extends BXLink {
[ ] class DDSLanguageSelectorDesktop extends HostListenerMixin(DDSComboBox) {
[ ] class DDSLanguageSelectorMobile extends BXSelect {
[ ] class DDSLegalNavItem extends DDSFooterNavItem {
[ ] class DDSBreadcrumbItem extends StableSelectorMixin(BXBreadcrumbItem) {
[ ] class DDSBreadcrumbLink extends StableSelectorMixin(BXBreadcrumbLink) {
[ ] class DDSBreadcrumb extends StableSelectorMixin(BXBreadcrumb) {
[ ] class DDSLeadspaceImage extends StableSelectorMixin(DDSImage) {
[ ] class DDSLeadSpaceBlockContent extends DDSContentBlock {
[ ] class DDSLeadSpaceBlockCTA extends StableSelectorMixin(DDSButtonGroup) {
[ ] class DDSLeavingIbmModalBody extends StableSelectorMixin(BXModalBody) {
[ ] class DDSLeavingIbmModalHeading extends StableSelectorMixin(BXModalHeading) {
[ ] class DDSLeavingIbmModal extends StableSelectorMixin(BXModal) {
[ ] class DDSLightboxImageViewer extends DDSLightboxMediaViewerBody {
[ ] class DDSLightboxMediaViewer extends DDSLightboxMediaViewerBody {
[ ] class DDSLightboxVideoPlayer extends DDSLightboxMediaViewerBody {
[ ] class DDSLinkListItem extends DDSCardLink {
[ ] class DDSLinkListItem extends DDSLinkWithIcon {
[ ] class DDSLinkListSection extends StableSelectorMixin(DDSContentSection) {
[ ] class DDSLinkWithIcon extends StableSelectorMixin(BXLink) {
[ ] class DDSLocaleItem extends BXLink {
[ ] class DDSLocaleModal extends DDSExpressiveModal {
[ ] class DDSRegionItem extends BXLink {
[ ] class DDSLogoGridItem extends StableSelectorMixin(DDSImage) {
[ ] class DDSLogoGridLink extends StableSelectorMixin(DDSCardLink) {
[ ] class DDSLogoGrid extends StableSelectorMixin(DDSContentBlock) {
[ ] class DDSCloudButtonCTA extends DDSButtonExpressive {
[ ] class DDSCloudLeftNavItem extends BXSideNavLink {
[ ] class DDSCloudMastheadComposite extends DDSMastheadComposite {
[ ] class DDSCloudMastheadGlobalBar extends DDSMastheadGlobalBar {
[ ] class DDSCloudMastheadProfile extends DDSMastheadProfile {
[ ] class DDSCloudMegaMenuCateoryLink extends BXLink {
[ ] class DDSCloudMegaMenuLeftNavigation extends DDSMegaMenuRightNavigation {
[ ] class DDSCloudMegaMenuRightNavigation extends DDSMegaMenuLeftNavigation {
[ ] class DDSCloudMegaMenuTab extends BXTab {
[ ] class DDSCloudMegaMenuTabs extends BXTabs {
[ ] class DDSCloudMegaMenu extends DDSMegaMenu {
[ ] class DDSCloudTopNavName extends DDSTopNavName {
[ ] class DDSLeftNavItem extends BXSideNavLink {
[ ] class DDSLeftNavMenuItem extends BXSideNavMenuItem {
[ ] class DDSLeftNavName extends BXHeaderName {
[ ] class DDSLeftNav extends StableSelectorMixin(BXSideNav) {
[ ] class DDSMastheadMenuButton extends HostListenerMixin(BXHeaderMenuButton) {
[ ] class DDSMastheadProfileItem extends BXHeaderMenuItem {
[ ] class DDSMegaMenuCateoryLink extends BXLink {
[ ] class DDSMegaMenuLinkWithIcon extends BXLink {
[ ] class DDSMegaMenuTopNavMenu extends DDSTopNavMenu {
[ ] class DDSSkipToContent extends BXSkipToContent {
[ ] class DDSTopNavItem extends BXHeaderNavItem {
[ ] class DDSTopNavL1 extends DDSTopNav {
[ ] class DDSTopNavMenuItem extends BXHeaderMenuItem {
[ ] class DDSTopNavMenu extends BXHeaderMenu {
[ ] class DDSTopNavName extends DDSLeftNavName {
[ ] class DDSTopNav extends StableSelectorMixin(HostListenerMixin(BXHeaderNav)) {
[ ] class DDSPictogramItem extends StableSelectorMixin(DDSContentItem) {
[ ] class DDSPricingTableBody extends StableSelectorMixin(DDSStructuredListBody) {
[ ] class DDSPricingTableGroup extends StableSelectorMixin(DDSStructuredListGroup) {
[ ] class DDSPricingTableHead extends StableSelectorMixin(DDSStructuredListHead) {
[ ] class DDSPricingTableHeaderCellCta extends StableSelectorMixin(DDSButtonCTA) {
[ ] class DDSPricingTableHeaderCellTag extends StableSelectorMixin(DDSTagLink) {
[ ] class DDSPricingTableRow extends StableSelectorMixin(DDSStructuredListRow) {
[ ] class DDSQuoteLinkWithIcon extends DDSLinkWithIcon {
[ ] class DDSSearch extends BXSearch {
[ ] class DDSScopedSearchDropdownMobile extends BXSelect {
[ ] class DDSScopedSearchDropdown extends DDSDropdown {
[ ] class DDSStructuredListBody extends BXStructuredListBody {
[ ] class DDSStructuredListCell extends BXStructuredListCell {
[ ] class DDSStructuredListHead extends BXStructuredListHead {
[ ] class DDSStructuredListHeaderCell extends BXStructuredListHeaderCell {
[ ] class DDSStructuredListHeaderRow extends BXStructuredListHeaderRow {
[ ] class DDSStructuredListRow extends BXStructuredListRow {
[ ] class DDSTabsExtendedMedia extends DDSTabsExtended {
[ ] class DDSUniversalBannerCopy extends StableSelectorMixin(DDSMarkdown) {
[ ] class DDSUniversalBannerImage extends DDSImage {

packages/carbon-web-components

[ ] class BXBreadcrumbLink extends BXLink {
[ ] class BXBreadcrumbOverflowMenu extends BXOverflowMenu {
[ ] class BXButtonSkeleton extends BXButton {
[ ] class BXComboBoxItem extends BXDropdownItem {
[ ] class BXComboBox extends BXDropdown {
[ ] class BXTableCellSkeleton extends BXTableCell {
[ ] class BXTableExpandRow extends HostListenerMixin(BXTableRow) {
[ ] class BXTableHeaderCellSkeleton extends BXTableCell {}
[ ] class BXTableHeaderExpandRow extends BXTableExpandRow {
[ ] class BXTableHeaderRow extends BXTableRow {
[ ] class BXTableToolbarSearch extends HostListenerMixin(BXSearch) {
[ ] class BXOrderedList extends BXUnorderedList {
[ ] class BXModalFooterButton extends BXButton {
[ ] class BXMultiSelectItem extends BXDropdownItem {
[ ] class BXMultiSelect extends BXDropdown {
[ ] class BXToastNotification extends BXInlineNotification {
[ ] class BXNumberInput extends BXInput {
[ ] class BXOverflowMenuBody extends BXFloatingMenu {
[ ] class RadioButtonDelegate implements ManagedRadioButtonDelegate {
[ ] class BXTab extends BXContentSwitcherItem {
[ ] class BXTabs extends HostListenerMixin(BXContentSwitcher) {
[ ] class BXClickableTile extends BXLink {
[ ] class BXRadioTile extends HostListenerMixin(SelectableTile) {
[ ] class BXToggle extends BXCheckbox {
[ ] class BXTooltipBody extends BXFloatingMenu {
[ ] class BXTooltipIcon extends BXTooltipDefintion {
[ ] class BXHeaderMenuItem extends BXHeaderNavItem {}

Couple questions. First, is it only when multiple component extending the same base are defined on the same page that this turns up?
Second, @jkaeser, can you share the methodology for finding all of the affected components? Is there a way to search for all affected components to come up with the list here? Was it a manual process of iterating through every component under packages/[carbon-]web-components and checking if each extended some other non-base class w/ potential for collision? Or does this list represent every component? Going foward, is there a heuristic for when a component requires a base component,  component pair?

@m4olivei

It happens whenever the same unique component name is registered multiple times on a given webpage. There's a babel plugin that works around the issue within this the web-components package, but this is a workaround; it doesn't save us when different libraries attempt register the same name. This can happen for a number of reasons, but some real world examples are:

a single page loading multiple built versions of C4IBM
a page using C4IBM and C4AEM where both include elements that extend from a common parent element (such as DDSButton and CAEMButton both extending from BXButton, which would throw the error for BXButton)

I believe this list shows any component that extends from anything other than LitElement. @andy-blum is that right, and do you still have the regex we used to find affected components? As for a heuristic, that's a good question, and I don't have a great answer. It's possible that every component should use this base class model since we can't know for sure which ones somebody will want to extend from in the future.

@kennylam @jeffchew We're still blocked on this issue. Does anyone within your team have any bandwidth next week to help pair with us on the remaining work for this issue (https://github.com/carbon-design-system/carbon-for-ibm-dotcom/pull/9941)? We'd like to get progress moving on this duplicate registry issue as it's blocking our Widget team from adopting the Web Components package into their system.

Related PR from the lit repository:

https://github.com/lit/lit/pull/4461


[terra-date-picker] Remove onClickOutside that is replaced by onDismiss

Description
onDismiss was introduced in #1219 to replace the deprecated onClickOutside. onClickOutside can be removed in the next major version.
Additional Context / Screenshots

Expected Behavior

Possible Solution

Environment

Component Name and Version:
Browser Name and Version:
Node/npm Version: [e.g. Node 8/npm 5]
Webpack Version:
Operating System and version (desktop or mobile):

@ Mentions

Is this function called when the display should be dismissed or after it has been dismissed?
@tbiethman Left this comment on a recent PR mentioning onRequestClosed was better for my scenario. Not sure if it could be applied here as well.
Comment left on the Notification Banner PR: https://github.com/cerner/terra-application/pull/45#discussion_r438549394

The callback function will be invoked when it is about to be dismissed but not yet dismissed. It will be dismissed after this state is updated and re-rendered. @emilyrohrbough Are you thinking onRequestClosed is a more appropriate name than onDismiss for the date-picker case?

Closed in PR

Should we reopen this? #1224 only deprecated onClickOutside. This issue is for completely removing it in the next MVB.


Bump DocumentDB.Core Package Version to Fix Runtime Error

When version 2.5.1 of DocumentDB.Core is used alongside another Azure package (e.g. Cosmos.Table), a runtime exception is thrown.
Bump DocumentDB.Core to a version >=2.6.0 to prevent this from happening.

See https://github.com/Azure/azure-cosmos-table-dotnet/issues/7 for more details on the issue.


added kku.edu.tr kirikkale university

University: Kirikkale University
Domain: https://kku.edu.tr/
Email provider: Microsoft Office 365

@izniburak I am sorry, the domain kku.edu.tr is removed from our trusted domains list because it was abused in the past. If you are the student of this school, please enroll to GitHub Student Developer Program. Then apply for JetBrains educational subscription with your GitHub account (GitHub tab at https://www.jetbrains.com/shop/eform/students).

It's really sad that others are paying the price for this. Thanks.


How  is  this  project made？

I see that the project is wrote in js.  But I am not familiar with js.  I wonder how excel  is controlled here.   I personally tried using COM object through c++. But I got trouble in finding proper interfaces.  Does this project take the same way?

 You can implement XLSX export and import from basically any programming language as long as you are capable of implementing the xlsx spec because it is "just reading and writing plain text files" (of course it is super complex, just simplified for your understanding).

@dbsxdbsx exceljs actually doesn't handle Excel app,
This lib has two main layers:

Reader/Write - which operate on xml files included in xlsx: https://github.com/exceljs/exceljs/tree/master/lib/xlsx/xform

Logic layer - has implemented logic of objects existed in xlsx file (Workbook, worksheet etc.)
https://github.com/exceljs/exceljs/tree/master/lib/doc

It's possible because xlsx file it's - as @Tilogorn said - a simple ZIP file (You can change the file's extension from .xlsx to .zip and unpack it :) )

Thanks!


Object of class Closure could not be converted to string

So I cant seem to do some basic PHP within the factory method?
This works:
$factory('Album', [
    'name' => $faker->name
]);

This fails with error Object of class Closure could not be converted to string:
$factory('Album', [
    'name' => $faker->name.' add some text'
]);

I was just this minute running into the same issue. Everything was working correctly until I started adding some basic concatenation, much like @TheShiftExchange.
Best way around that though is to follow the suggestion in the docs and set up any custom strings via a closure e.g.
$factory('App\Artist', function($faker) {
    $name = sprintf('Some Band Named %s', $faker->word);

    return [
        'name' => $name,
        'url' => $faker->url,
        // etc etc
    ];
});

Yep - use a closure.


BUILD-256: add driver config configmap to operator manifest

to facilitate my revival of the no refresh resources e2e in the driver repo ... hope to get that PR up later today
/assign @coreydaley
@otaviof FYI
see https://github.com/openshift/cluster-openshift-controller-manager-operator/blob/master/manifests/05_builder-deployer-config.yaml for precedence of including "configuration" config maps in operator manifests

/lgtm

hmmm ... I did not see the new configmap in the must gather ...
I wonder @coreydaley if we need to make the change in https://github.com/openshift/cluster-storage-operator/tree/master/assets/csidriveroperators/shared-resource ... probably so, no?
And while we are at it, seems like there are other discrepancies, including the lack of @alicerum 's recent metrics additions
WDYT?

I think the operator should be creating the initial configmap, does it have permissions to do so?

I think the operator should be creating the initial configmap, does it have permissions to do so

Putting it in the manifest folder absolves the operator from having to do it.  It then falls onto the CVO for "classic" operators, but for these CSO ones I think that is why we make updates to https://github.com/openshift/cluster-storage-operator/tree/master/assets/csidriveroperators/shared-resource ...if you open that link up you'll see you dropped several initial changes back for BUILD-284 2 weeks ago.
The CVO is super user, but yeah, in the CSO case, I'll need to make sure it has permissions I think.

Yeah in fact when I know look at other CSI drivers managed by the CSO like https://github.com/openshift/aws-efs-csi-driver and https://github.com/openshift/azure-file-csi-driver they don't have manifest folders  @coreydaley

Why don't we move this conversation to slack?


feat(rust): Add support to the Rust indexer for emitting module definitions and anchors

This PR adds support for emitting module definitions and anchors in the Rust indexer. Implicit module definitions have 0-length anchors at the top of the file with defines/implicit edges, and explicit module definitions have anchors on the module name with defines/binding edges.

The save_analysis files contain incorrect byte_start and byte_end values in the spans if the crate has multiple files, though the provided line and column numbers are correct. This seems to come from the offsets in the compiler source map rather than the file by itself. Because of this, I have to create my own index of byte offsets for each source file. I tried to reduce the amount of memory that gets stored by tracking if a line only contains single-byte characters


Nameserver warning when Nameserver A record is a managed record

Versions
NetBox Version: 3.6.4
NetBox DNS Version: 0.20.1
Python Version: 3.12.0
Describe the bug
With the addition of the IPAM Coupling functionality, it is now possible to have a managed A record describe the NS for the domain and still get the warning "Nameserver  does not have an active address record in zone".
To Reproduce
Steps to reproduce the behavior:

Create a zone with the name servers configured as normal, but with no A record entries
Add an IP Address to Netbox IPAM for the name server and configure the IPAM Coupling to assign it to the domain provided
Confirm that there is a managed A record for the IP Address configured in IPAM
Go to the zone overview and see that there is a warning present for no active address, but the address is managed.

Expected result
There should be no warning present
Actual result
There are warnings present
Screenshots
I will generate screenshots later. Currently registering this issue so I don't forget about it.

For those curious, the issue was that the custom field at the bottom of the IPAM entry should be just the hostname, not the full domain entry, as I personally expected.


Added Max Desiatov's blog

Thanks for this fantastic directory, already found a ton of great stuff to follow!

Thanks!


Drop three User fields we aren't keeping up to date; verify that's all

This was prompted by noticing recently that we weren't updating
[User.isActive]:
https://github.com/zulip/zulip-flutter/pull/816#discussion_r1689098946
(/cc @sm-sayedi)
After we fixed that, I looked and found there were actually three
other fields on User which we weren't updating -- a latent bug,
since we never looked at those fields, but a bug.  Fix that.
Then add a comment showing my work on verifying that that's it,
and giving us a head start on re-verifying that in the future
with whatever's changed in the API between now and then.

Thanks, LGTM! Merged.


Using the docs suggested way to render on the server side, content: "" in ::before, ::after gets encoded as &quote;

Suppose we have:
css = '.css-abc:before { content: "" }'
then:
<style>{css}</style>
gives:
<style>.css-abc:before { content: "" } </style>
... which is not the desired outcome. Whereas:
<style dangerouslySetInnerHTML={{ __html: css }} />
will give:
<style>.css-abc:before { content: "" } </style>
Updating docs/server.md so others aren't misled.

💯 Thanks for the PR


feat: add env var OBSIDIAN_GIT for scripting

I have a pre-push hook that ask for user confirmation. Sadly it makes obsidian-git push failed by timeout since I cannot make tty input.
A simple solution is to add an environment variable when spawn git process, check it in the hook and bypass the confirmation.
I also think configurable push command will be cool, but it's too much for this case.

lgtm, @Vinzent03 agree?

So far I didn't work on other issues, because I didn't want to get merge conflicts with #66 , but I am already waiting a long time for the missing method from the Obsidian devs. I have no clue, when they will add that. I am okay with merging this. Will implement #70 and #68 hopefully this evening and will publish a release then.


[Question] Can we build a Mac or Universal version of the iOS app?

❓ General Questions
Thank you so much for this amazing project -- it's a complete game-changer when it comes to running LLM locally. I'd like to make this available to my non-technical colleagues as a standalone Mac app. I can already install the iPad version,  but it would be great to have a "proper" Mac app.
I've tried to edit the Xcode project to add Mac Catalyst as a target, but I get errors to do with the wrong architecture
Build failed because libmlc_llm.a, libmodel_iphone.a, libsentencepiece.a, libtokenizers_c.a, libtokenizers_cpp.a and libtvm_runtime.a are missing a required architecture. Would you like to build for Rosetta instead?

I think the correct archs are aarch64-apple-ios-macabi and x86_64-apple-ios-macabi, and I can use them by updating the prepare_libs script
cargo +nightly build -Z build-std --release --target aarch64-apple-ios-macabi
cargo +nightly build -Z build-std --release --target x86_64-apple-ios-macabi

However, that doesn't seem to fix the Xcode issue, so I'm a bit stuck. I'd be very grateful for an tips :)

To build an macapp, likely an update on https://github.com/mlc-ai/mlc-llm/blob/main/ios/prepare_libs.sh is needed. The swift UI also need some update, if you manage to do it, we love a PR

I would avoid multiarch build, mainly because the the .o file that we build have a specific target string https://github.com/mlc-ai/mlc-llm/blob/main/mlc_llm/utils.py#L435 which should work for M1(arch64) but not for x86.
For now, going with the iPad app for Macbook might be the easiest option

I have also been working on this because I am interested in building a react-native project that works on OSX. I currently have been able to

Build mac x86 static libs based off of these steps: https://mlc.ai/mlc-llm/docs/deploy/cli.html

~/repo/mlc-llm-paris/osx ls build/lib
libmlc_llm.a        libsentencepiece.a  libtokenizers_c.a   libtokenizers_cpp.a libtvm_runtime.a

Add a new osx target to the existing iOS project.

Build this new OSX target and see the app open on OSX.

Click on a model to chat, but then I get a crash.

You can see my code here: https://github.com/jparismorgan/mlc-llm/pull/1 - check the osx/README.md for how to build it. The crash I am getting is TVM runtime cannot find vm_load_executable:
libc++abi: terminating with uncaught exception of type tvm::runtime::InternalError: [23:14:37] /Users/parismorgan/repo/mlc-llm/cpp/llm_chat.cc:244: InternalError: Check failed: (fload_exec.defined()) is false: TVM runtime cannot find vm_load_executable
Stack trace:
  [bt] (0) 1   MLCChat-macos                       0x0000000100fea528 tvm::runtime::Backtrace() + 24
  [bt] (1) 2   MLCChat-macos                       0x0000000100f9560d tvm::runtime::detail::LogFatal::Entry::Finalize() + 77
  [bt] (2) 3   MLCChat-macos                       0x0000000100f955b9 tvm::runtime::detail::LogFatal::~LogFatal() + 25
  [bt] (3) 4   MLCChat-macos                       0x0000000100f94559 tvm::runtime::detail::LogFatal::~LogFatal() + 9
  [bt] (4) 5   MLCChat-macos                       0x0000000100fa7dd5 mlc::llm::LLMChat::Reload(tvm::runtime::Module, tvm::runtime::String, tvm::runtime::String) + 6005
  [bt] (5) 6   MLCChat-macos                       0x0000000100fa6378 mlc::llm::LLMChatModule::GetFunction(tvm::runtime::String const&, tvm::runtime::ObjectPtr<tvm::runtime::Object> const&)::'lambda'(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const + 536
  [bt] (6) 7   MLCChat-macos                       0x0000000100f85adf tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::runtime::Module&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&>(tvm::runtime::Module&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) const + 351
  [bt] (7) 8   MLCChat-macos                       0x0000000100f854fa -[ChatModule reload:modelPath:appConfigJson:] + 570
  [bt] (8) 9   MLCChat-macos                       0x0000000100f4c818 $s13MLCChat_macos9ChatStateC010mainReloadC033_2124E0952CFB3CB7802CDB9B1453057DLL7localId8modelLib0N4Path16estimatedVRAMReq11displayNameySS_S2Ss5Int64VSStFyycfU_ + 6120

I'm not quite stuck, but if anyone would like to take a look, I don't think we are too far from getting this working! If we are able to get the inference part working then I am planning to rewrite the app as a new xcode project so we don't need to have all the commented out things.

@tqchen I have considered that, but it appears the iPad version can only be installed from the App Store? We would really like to be able to create a standalone executable for internal distribution, without having to go through the App Store.
@jparismorgan I had this very same problem. IIRC, I had missed the bit in the documentation which told us to install TVM Unity. I think I fixed it by following the steps at https://mlc.ai/mlc-llm/docs/install/tvm.html

@tqchen If I were to update the linked script (https://github.com/mlc-ai/mlc-llm/blob/main/mlc_llm/utils.py#L435) to support Mac architecture, what else would I need to do to actually create a mac-compatible model?

I think the main issue would be multi arch. If we build the app for either apple silicon or x86 I think updating the flag should work.
So atm we will need to build the app for each platform here

Aka if we set the right target and say build an app only for apple silicon MacOS.
I think the main thing would be to update the mlc related build part to producer the compatible lib for that specific target

@jparismorgan I don't see libmodel_iphone.a in your list of mac x86 static libs. I believe this library is build by prepare_model_lib.py. Could this be the cause of TVM runtime cannot find vm_load_executable ?

@tqchen Sorry for the slow reply, I've had to move this into my pet projects time. I'm looking at the utils script and wondering if I can just pass target=metal or target=metal_x86_64 to hit e.g https://github.com/mlc-ai/mlc-llm/blob/main/mlc_llm/utils.py#L378
Would that not produce the correct arch? Do I just follow the instructions at https://mlc.ai/mlc-llm/docs/compilation/compile_models.html to try it out?

Ok, so I've been trying to set up my environment for compilation, but there's something wrong with TVM.
These are the steps I've followed:
# Clone repo
git clone git@github.com:mlc-ai/mlc-llm.git --recursive

# Set up environment
conda create -n mlc-chat-venv -c mlc-ai -c conda-forge mlc-chat-nightly
conda activate mlc-chat-venv
python3 -m mlc_llm.build --help
>> ModuleNotFoundError: No module named 'torch'

# Install pytorch
conda install pytorch -c pytorch
python3 -m mlc_llm.build --help
>> ModuleNotFoundError: No module named 'tvm'

# install tvm
conda install -c conda-forge tvm-py
>> package tvm-py-0.8.0-py310h4e15889_4_cpu requires python >=3.10,<3.11.0a0 *_cpython, but none of the providers can be installed

# downgrade to python 3.10
conda install python 3.10
conda install -c conda-forge tvm-py
python3 -m mlc_llm.build --help
>> AttributeError: module 'tvm.script.tir' has no attribute 'Buffer'

Any ideas where I'm going wrong?

Can you provide more details about the apple silicon prebuild and what does not work? Would love to help digging into it

So the prebuilt models are working great. I can use them with the CLI running on my Mac, and I can use the iPhone version with the sample iOS app, using "Designed for iPad".
However, what I really need is to build a single, standalone  internal Mac app so less determined people in my organisation can easily experience LLMs without having to install python, conda, TVM etc. As far as I can tell, "Designed for iPad" can only be installed through the App Store, so I'm trying to convert the demo iOS app into a Mac Catalyst app. I've managed to rebuild everything else for the correct architecture, except for libmodel_iphone.a, so I get the error
building for Mac Catalyst, but linking in object file built for , file '[...]/mlc-ai/ios/build/lib/libmodel_iphone.a' for architecture arm64

Based on your earlier advice, I understand that I should rebuild my ML model with a different architecture, so I'm setting up my machine to compile models.
I've now managed to build TVM from source and used export PYTHONPATH=/Users/elepedus/Developer/work/tvm-unity/python/:$PYTHONPATH, but when I try to run python3 -m mlc_llm.build --help, I always get a missing dependency eg numpy,scipy, psutil, typing_extensions,attr, pytorch etc
I never thought I'd miss NPM's package.json 😓

After installing all the missing modules, I get a new error:
python3 -m mlc_llm.build --hf-path togethercomputer/RedPajama-INCITE-Chat-3B-v1 --target metal --quantization q4f16_1
Weights exist at dist/models/RedPajama-INCITE-Chat-3B-v1, skipping download.
Using path "dist/models/RedPajama-INCITE-Chat-3B-v1" for model "RedPajama-INCITE-Chat-3B-v1"
Database paths: ['log_db/rwkv-raven-3b', 'log_db/redpajama-3b-q4f16', 'log_db/redpajama-3b-q4f32', 'log_db/rwkv-raven-1b5', 'log_db/dolly-v2-3b', 'log_db/rwkv-raven-7b', 'log_db/vicuna-v1-7b']
[17:03:55] /Users/elepedus/Developer/work/tvm-unity/src/runtime/metal/metal_device_api.mm:167: Intializing Metal device 0, name=Apple M2 Max
Host CPU dection:
  Target triple: arm64-apple-darwin22.5.0
  Process triple: arm64-apple-darwin22.5.0
  Host CPU: apple-m1
Target configured: metal -keys=metal,gpu -max_function_args=31 -max_num_threads=256 -max_shared_memory_per_block=32768 -max_threads_per_block=1024 -thread_warp_size=32
Traceback (most recent call last):
  File "/Users/elepedus/miniconda3/envs/mlc-chat-venv-src/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/Users/elepedus/miniconda3/envs/mlc-chat-venv-src/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/Users/elepedus/Developer/work/mlc-llm-src/mlc_llm/build.py", line 13, in <module>
    main()
  File "/Users/elepedus/Developer/work/mlc-llm-src/mlc_llm/build.py", line 10, in main
    core.build_model_from_args(parsed_args)
  File "/Users/elepedus/Developer/work/mlc-llm-src/mlc_llm/core.py", line 471, in build_model_from_args
    mod, param_manager, params = gpt_neox.get_model(args, config)
  File "/Users/elepedus/Developer/work/mlc-llm-src/mlc_llm/relax_model/gpt_neox.py", line 787, in get_model
    param_manager.set_param_loading_func(
  File "/Users/elepedus/Developer/work/mlc-llm-src/mlc_llm/relax_model/param_manager.py", line 331, in set_param_loading_func
    self.torch_pname2binname = load_torch_pname2binname_map(
  File "/Users/elepedus/Developer/work/mlc-llm-src/mlc_llm/relax_model/param_manager.py", line 834, in load_torch_pname2binname_map
    assert os.path.isfile(single_shard_path)
AssertionError

Looks like the error above is caused by the script not downloading the model correctly when passing the --hf-path togethercomputer/RedPajama-INCITE-Chat-3B-v1 param. The cloned repository only contains a few json files (perhaps it's not doing git lfs clone?)  Either way, if I manually clone the repo with all the correct files in it, then I'm able to build the model and use it from the CLI.
Next, I will try to compile the model for different archs and see if I can get XCode to build the Mac Catalyst app with it.

Nope, sorry -- ended up using & recommending LM Studio, which is based on llama.cpp. Although it recently added support for alternative backends (e.g MLX), so it might be possible to get an MLC backend as well...


etcd-operator restore from s3 needs to know about s3 prefix

Since etcd-operator supports s3 backup with s3 prefix, then restored from prefixed s3 backup also needs to know about prefix; otherwise, restore won't find the correct backup path.

I took a look of this issue again. I was able to restore a cluster with following steps:
First, kubectl deploy operator with following:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: etcd-operator
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: etcd-operator
    spec:
      containers:
      - name: etcd-operator
        image: gcr.io/coreos-k8s-scale-testing/etcd-operator:fanmin
        env:
        - name: MY_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name

Then create a 3 node etcd cluster named s3-cluster-backup:
apiVersion: "etcd.database.coreos.com/v1beta2"
kind: "EtcdCluster"
metadata:
  name: "s3-cluster-backup"
spec:
  size: 3
  version: "3.1.8"
  backup:
    # short snapshot interval for testing, do not use this in production!
    backupIntervalInSecond: 30
    maxBackups: 5
    storageType: "S3"
    s3:
      s3Bucket: jenkins-etcd-operator
      awsSecret: aws
      prefix: test-prefix

Once s3-cluster-backup back up its snapshot, I created another etcd cluster called s3-cluster-backup-b that restore snapshot from s3-cluster-backup:
apiVersion: "etcd.database.coreos.com/v1beta2"
kind: "EtcdCluster"
metadata:
  name: "s3-cluster-backup-b"
spec:
  size: 3
  version: "3.1.8"
  backup:
    # short snapshot interval for testing, do not use this in production!
    backupIntervalInSecond: 30
    maxBackups: 5
    storageType: "S3"
    s3:
      s3Bucket: jenkins-etcd-operator
      awsSecret: aws
      prefix: test-prefix
  restore:
   backupClusterName: "s3-cluster-backup"
   storageType: "S3"

I noticed that cluster restore depends on s3 spec under backup for finding the correct full s3 path of the restoring snapshot. I am unsure if the dependency is intended.
Seen from the restores-from-previous-s3-backup spec example doesn't require the s3 spec:
metadata:
  name: "cluster-a"
spec:
  size: 3
  backup:
    backupIntervalInSecond: 300
    maxBackups: 5
    storageType: "S3"
  restore:
    backupClusterName: "cluster-a"
    storageType: "S3"

@fanminshi
Yeah. That was intended because we don't need to duplicate the spec.
Add a docs maybe?

@hongchaodeng yeah, I think updating the doc will make more restoring from cluster example clearer.

close via https://github.com/coreos/etcd-operator/pull/1404


Feature/netcon

I noticed you had a TODO to have netcon as a wrapper. I've created bindings for this for another project, so decided to add it here. this adds the ability to call netcon from python

everything is passing now so it should be ready for review 👍


ACCESS_COARSE_LOCATION permission required

WiFi Direct requires coarse location permission. You may need to copy the AndroidManifest into Assets/Plugins/Android and manually add the permission before WiFi Direct will work in your game. Just a heads up to others.

Are you sure? It works fine with only the network based perms for me. Also, permission incompatibility shouldn't be an issue if you're running marshmallow with user selected perms

Yes, you can see it is required here: https://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html#permissions
Also, I see it in the LogCat when debugging.

can you pastebin your logcat for me? The base library doesn't have that perm

It showed the standard error for missing permissions in the logcat. Only after manually adding to the Manifest does a dialog appear requesting permission to use location when opening the game, even on Marshmallow.
Note that if your game uses location of other reasons, the permission will be automatically be added.

Sorry it took so long to reply (need to work on studies first). However, I recently updated the example to the latest version of the library and it worked for me. https://github.com/saltyJeff/WifiDirectExample.
Here's a gist of the app's AndroidManifest: https://gist.github.com/saltyJeff/0a46d589fd834a71897799ef8c644017 (pulled with APK analyzer in Android Studio).
Something could be different with our build systems. I am running Unity 2017.1 on Win10 with the "Internal" build system for Android


fix(analytics): updated analytics to use angulartics

@robinjoseph08

needs a rebase, but there was an issue with the shrinkwrap file. Not sure how to fix that part

I took a stab at it this weekend, and I think I got all the changes that you made. You definitely pushed me in the right direction with angulartics2.
 I don't know if there's a better way though.

@robinjoseph08 ok cool, Yeah I checked analytics and your data is looking a lot better. Now you can see sign up by source, check it out
https://analytics.google.com/analytics/web/#report/trafficsources-all-traffic/a45307701w114513976p119665183/

cool, since this has already been implemented, i'll just close this pr 👍


Implement RTL on applicable components

@jamesmfriedman Want help with this?

Help would be awesome!
Last time I looked through the docs, it seemed like a lot of it was just dependent on the attribute dir=“rtl”. I’m sure there are cases where it is a bi more complicated than that.
I’ll look at the docs but I good place to start might just be identifying the requirements of each component to be RTL.


how did you determine what is factually correct ?

please share details of how you determined how you came to the conclusion that something is factually correct? Did you further take the generated summary and the actual article again and ask another LLM if the summary is factually correct? If so which one was used? How do you know that was not hallucinating / accurate?

Please see this article as well as our methodology section - https://vectara.com/cut-the-bull-detecting-hallucinations-in-large-language-models/., as well as the FAQ. It is using a model, and yes that model is not 100% perfect. Neither are humans. Any human eval would be a one off and could not be given away for others to reproduce, nor would it regularly updatable (e.g. we just added GPT 4 turbo). It is a lot easier a problem to solve to detect a hallucination than to have a general LLM that does not hallucinate. Using GPT 4 to detect hallucinations in other LLMs makes less sense, unless it's shown to be reliable at doing so.

thanks Simon. any chance of sharing the code to train the model ?  Summaries of statements are so subjective on context and vary in size quite a bit,  and thus its hard to draw any conclusions on "scores" of such models.


Limitation on URL shortening

Steps to reproduce
We are working on a feature of unfurling a URL in Microsoft Teams into a loop component based adaptive card using a bot. The URL is quite lengthy not giving a good user experience, we are looking for a mechanism from Microsoft to shorten the URL that can be unfurled into a loop component based adaptive card
Expected behavior
we expect a mechanism to shorten the URL
Actual behavior
No solution exisit as of today
Error details
No response

@vigneshsathisrikumar - Currently, there isn't a built-in feature in Microsoft Teams to shorten URLs directly within the platform.
To achieve your requirements, we recommend you give your feedback in Teams Feedback Portal.
However, you can proceed with Short URL Connector if it fits your scenario. Short URL Connector can be used to create, update, or delete short URLs using a custom domain name. This might be a solution for creating short URLs that can be used within Teams.


Encountering error when running online_management_simulate.py in examples.

The log is as follows:
[17444:MainThread](2021-07-13 16:00:41,035) INFO - qlib.Initialization - [config.py:287] - default_conf: client.
[17444:MainThread](2021-07-13 16:00:41,041) INFO - qlib.Initialization - [init.py:54] - qlib successfully initialized based on client settings.
[17444:MainThread](2021-07-13 16:00:41,042) INFO - qlib.Initialization - [init.py:55] - data_path=C:\Users\wuzhe.qlib\qlib_data\cn_data
========== reset ==========
========== simulate ==========
[17444:MainThread](2021-07-13 16:00:41,162) INFO - qlib.OnlineManager - [manager.py:111] - Strategy rolling_exp begins first training...
[17444:MainThread](2021-07-13 16:00:41,164) WARNING - qlib.utils - [init.py:586] -
Info: the end_date in the configuration file is 2021-12-31 00:00:00, so the default last date 2020-09-25 00:00:00 is used.
[17444:MainThread](2021-07-13 16:00:41,165) WARNING - qlib.utils - [init.py:586] -
Info: the end_date in the configuration file is 2021-12-31 00:00:00, so the default last date 2020-09-25 00:00:00 is used.
[17444:MainThread](2021-07-13 16:00:41,198) INFO - qlib.TaskManager - [manage.py:224] - Total Tasks: 6, New Tasks: 6
[17444:MainThread](2021-07-13 16:00:41,216) INFO - qlib.run_task - [manage.py:498] - {'model': {'class': 'XGBModel', 'module_path': 'qlib.contrib.model.xgboost'}, 'dataset': {'class'
: 'DatasetH', 'module_path': 'qlib.data.dataset', 'kwargs': {'handler': {'class': 'Alpha158', 'module_path': 'qlib.contrib.data.handler', 'kwargs': {'start_time': '2018-01-01', 'end_
time': '2018-10-31', 'fit_start_time': '2018-01-01', 'fit_end_time': '2018-03-31', 'instruments': 'csi100'}}, 'segments': {'train': (Timestamp('2020-01-02 00:00:00'), Timestamp('2021
-12-31 00:00:00')), 'valid': (Timestamp('2020-01-02 00:00:00'), Timestamp('2021-12-31 00:00:00')), 'test': (Timestamp('2020-01-02 00:00:00'), Timestamp('2020-04-02 00:00:00'))}}}, 'r
ecord': [{'class': 'SignalRecord', 'module_path': 'qlib.workflow.record_temp'}, {'class': 'SigAnaRecord', 'module_path': 'qlib.workflow.record_temp'}]}
[17444:MainThread](2021-07-13 16:00:41,219) INFO - qlib.workflow - [expm.py:261] - No tracking URI is provided. Use the default tracking URI.
[17444:MainThread](2021-07-13 16:00:41,221) INFO - qlib.workflow - [expm.py:297] - <mlflow.tracking.client.MlflowClient object at 0x000002A1B0D5D640>
[17444:MainThread](2021-07-13 16:00:41,235) INFO - qlib.workflow - [exp.py:249] - Experiment 2 starts running ...
[17444:MainThread](2021-07-13 16:00:41,574) INFO - qlib.workflow - [recorder.py:283] - Recorder 618a490f67eb453da626f63b166c8789 starts running under Experiment 2 ...
[17444:MainThread](2021-07-13 16:00:41,668) INFO - qlib.workflow - [expm.py:261] - No tracking URI is provided. Use the default tracking URI.
[17444:MainThread](2021-07-13 16:00:41,669) INFO - qlib.workflow - [expm.py:297] - <mlflow.tracking.client.MlflowClient object at 0x000002A1B0DA4400>
[17444:MainThread](2021-07-13 16:00:41,678) INFO - qlib.workflow - [exp.py:249] - Experiment 2 starts running ...
[17444:MainThread](2021-07-13 16:00:41,731) INFO - qlib.workflow - [recorder.py:283] - Recorder 618a490f67eb453da626f63b166c8789 starts running under Experiment 2 ...
[17444:MainThread](2021-07-13 16:00:43,179) INFO - qlib.timer - [log.py:113] - Time cost: 0.299s | Loading data Done
[17444:MainThread](2021-07-13 16:00:43,214) INFO - qlib.timer - [log.py:113] - Time cost: 0.029s | DropnaLabel Done
[17444:MainThread](2021-07-13 16:00:43,583) INFO - qlib.timer - [log.py:113] - Time cost: 0.367s | CSZScoreNorm Done
[17444:MainThread](2021-07-13 16:00:43,584) INFO - qlib.timer - [log.py:113] - Time cost: 0.404s | fit & process data Done
[17444:MainThread](2021-07-13 16:00:43,585) INFO - qlib.timer - [log.py:113] - Time cost: 0.705s | Init data Done
Then I will recieve this warning message for lots of times:
[16:00:43] WARNING: ..\src\learner.cc:1238: Empty dataset at worker: 0
** Finally got an error: **
ValueError: Data must be 1-dimensional

It seems to be a matter of data. Could you please help to analysis the bug. @lzh222333

@wuzhe1234 Can you give us more information about how to reproduce this bug?

You can try updating your Qlib to the latest version and re-downloading the data. I have met this BUG, but it should be solved already.

I updated Qlib and re-downloading the data, but I still got this error, I use  the parameter task_url="mongodb://<IP_ADDRESS>:27017/" and all other parameters are default parameters. Maybe it's because of my Mongodb settings. I'll try it on another machine to see if it could work.

@you-n-g @lzh222333 @wangwenxi-handsome I solved this issue. The reason is that if we use the get_data.py to get the cn data, there will be a "day_future.txt" in calendar folder. Thus the RollingGen will generate segements according to this file instead of "day.txt", I deleted "day_futures.txt", and the problem solved.


Add support for an accessory view to JSQMessagesCollectionViewCell

@jessesquires I was playing around with adding a button next to some of my media views (similar to the "Forward" icon Facebook Messenger puts next to images), and I wondered if it was worth adding in the base implementation. I think the most flexible option would be a UIView with constraints to center it vertically and offset it left or right based on the left/right state of the cell, basically the opposite of the avatar container. That would allow folks to embed a status icon, button, or custom view.
If anyone else cares, here is the code I used to create the above screenshot, just put it in cellForItemAtIndexPath and add a button action that uses the tag to determine which cell's button was tapped. Note that this hack will re-create the button each time it is rendered, so you'll need to do some additional work. 😜
    //if (msg.isMediaMessage) {
    UIButton * button = [UIButton buttonWithType:UIButtonTypeContactAdd];
    [button setTranslatesAutoresizingMaskIntoConstraints:NO];
    button.tag = indexPath.item;
    [cell.contentView addSubview:button];

    // Center Vertically
    NSLayoutConstraint *centerYConstraint = [NSLayoutConstraint constraintWithItem:button
                                                                         attribute:NSLayoutAttributeCenterY
                                                                         relatedBy:NSLayoutRelationEqual
                                                                            toItem:cell.messageBubbleContainerView
                                                                         attribute:NSLayoutAttributeCenterY
                                                                        multiplier:1.0
                                                                          constant:0.0];
    [cell.contentView addConstraint:centerYConstraint];

    NSLayoutConstraint *xConstraint;
    if ([self.senderId isEqualToString:msg.senderId]) {
        xConstraint = [NSLayoutConstraint constraintWithItem:button
                                                   attribute:NSLayoutAttributeRight
                                                   relatedBy:NSLayoutRelationEqual
                                                      toItem:cell.messageBubbleContainerView
                                                   attribute:NSLayoutAttributeLeft
                                                  multiplier:1.0
                                                    constant:-10];
    } else {
        xConstraint = [NSLayoutConstraint constraintWithItem:button
                                                   attribute:NSLayoutAttributeLeft
                                                   relatedBy:NSLayoutRelationEqual
                                                      toItem:cell.messageBubbleContainerView
                                                   attribute:NSLayoutAttributeRight
                                                  multiplier:1.0
                                                    constant:10];

    }
    [cell.contentView addConstraint:xConstraint];
    //}

Sounds good to me! :+1:
I've put this in 8.0.0.

@eliburke If I want to change this accessory based on message type, how could I get a reference from cellForRowAtIndexPath of the current accessory view so I could remove the previous one and add a new one?

I guess I should have more explicitly said "this is a hack" -- I was just prototyping the functionality.
The best solution is probably to add a UIView to the xib for the incoming and outgoing cells, and add an outlet in your JSQMessageData subclass. Then in cellForRowAtIndexPath add a button to the new view. If you store the current button type in your JSQMessageData, you can use that to determine when it should be updated to a different style.
You can of course skip the step of adding it to the xib, and just add a reference to the button in your JSQMessageData and remove / update it as needed.
Or enumerate subviews looking for the accessory.
Lots of ways to skin this cat. 😜

@jessesquires, @eliburke do you need help with this? If you do I could try and make a PR with the best solution described above.

@adubr PRs are always welcome of course, but I think we should discuss the feature a little more first. I think the cell XIBs are going away, so whatever is added will need to be placed in the cell programmatically, with appropriate constraints.
Then we should figure out what goes there.
Is it only an accessory button as narrowly defined by Apple?
Do we allow for a custom UIView?
How much configuration is provided (left/right offset from the bubble, top, middle, bottom alignment)
Do we provide an additional protocol and is it mandatory (didTapCellAccessoryButton)
I imagine that @jessesquires will want to have an accessory factory that returns an accessory view given a data object.

we should discuss the feature a little more first

Exactly, that's why I asked you first : )
I'm just diving into the project so please bear with my questions, there'll be a lot.
I think we should start with something very simple but extensible in the future.

If XIBs are going away, then the place for adding an accessory button should be a method in JSQMessagesCollectionViewCell which is called from awakeFromNib for the time being.
As far as I understand Apple has built their list of accessory kinds based on the most frequent actions a user would do. For our case the most common action is something like sharing or forwarding. I suppose there won't be a need for many other kinds. Anyway, there's a context menu. So I think for the first iteration just one type of the accessory should be enough. And no custom view for now.
I would prefer no configuration for this stage. JSQMessagesCollectionViewCell subview hierarchy is not configurable, is it?
Let's add an optional method messagesCollectionViewCellDidTapAccessoryButton: to JSQMessagesCollectionViewCellDelegate. Is it ok?
Do you mean something like [JSQMessagesAccessoryViewFactory accessoryViewWithType:JSQMessagesAccessoryViewFactoryShareButton]?

Hey @eliburke / @adubr 😄
Let's keep this simple, but extensible:

If working on this now, let's work with the existing xibs. We can refactor later.
The accessory view should be a generic button. Clients should be able to provide an accessory image. We'll use the same image for all cells. (i.e., you cannot customize per cell)
Configuration: clients should be able to hide/show, but nothing more
No optional delegate methods. We can add a new protocol/delegate instead, specifically for the accessory view tapping
Not sure if we need a view factory, just a way for clients to provide the image that they want to use for the button

Hey @jessesquires
thanks for reply : )

Sounds good to me.

Should it be a method in JSQMessagesCollectionViewDataSource? Or you prefer a dedicated protocol? Should we make default image like this (UIBarButtonSystemItemAction)?

Is it ok to define a new method in JSQMessageData for this purpose?
Ok

Do you have any specific coding style or other guidelines I should know before implementing this?

Oh, I see some info in the .github folder

Hey @adubr
(2) dedicated protocol would be best. UIBarButtonSystemItemAction 👍
(3) JSQMessageData is probably not the right place for this. This is really a UI configuration, so it should be separate from the model layer

@jessesquires,
usually when I develop something I try to follow the boyscout rule. This includes fixing spelling errors, renaming something (e.g. since jsq_bubbleImageFromBundleWithName doesn't really have anything to do with bubbles, jsq_imageFromBundleWithName looks like more concise name), extracting some methods (in order to make the code more readable and fulfil the SRP), etc.
May I do it here, or it's better to make only those changes which are actually required by the task?

I'm quite confused with JSQMessagesCollectionViewDelegateFlowLayout protocol.

It clearly does two things: (1) manages additional layout information and (2) responds to additional actions on items. There's a bunch of methods for both tasks. It's an apparent major violation of the SRP. Is there a reason for this? We can extract all user interaction related methods into a separate protocol (and add the accessory button callback there).
All the methods there are @optional. This conflicts with what @jessesquires said above.

@eliburke / @jessesquires please help me out.

May I do it here, or it's better to make only those changes which are actually required by the task?

Generally, I agree with the boyscout rule, but let's keep the PR focused on only necessary changes. We can definitely do a followup to refactor/rename

I'm quite confused with JSQMessagesCollectionViewDelegateFlowLayout protocol.

Ha, yes. 😄 There are a lot of legacy (read: poor) design decisions here. A major goal of v8.0 is to fix all of this (see #453). A lot of tasks are in-flight, so sorry for the confusion.

We probably want a new accessoryDelegate on the view controller. So we can avoid the flow layout issues for now.

Hey @jessesquires / @eliburke
I've done the PR for the task.
Waiting for your feedback :)


[SQL] az sql elastic-pool: add tests

Related command

az sql elastic-pool create
az sql elastic-pool update
az sql elastic-pool show

Description
Records elastic pool tests for VBS enclave functionality
Testing Guide

az sql elastic-pool create
az sql elastic-pool update
az sql elastic-pool show

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change
[Component Name 2] az command b: Add some customer-facing feature

This checklist is used to make sure that common guidelines for a pull request are followed.

[x] The PR title and description has followed the guideline in Submitting Pull Requests.

[x] I adhere to the Command Guidelines.

[x] I adhere to the Error Handling Guidelines.

SQL

/azp run Azure.azure-cli Breaking Change Test


Create separate containers for Java and Python

Update build and deploy scripts to support the same.
We will still have a single pod that will house both containers to enable the service connections to work the same.

@dinogun - Please fix the PR check

Tried it manually, build worked but deploying autotune failed with CrashLoopBackOff on my minikube setup

It looks like #299 was missing a dependency and the PR check did not catch it as the error got lost with the java messages. Infact this PR helped to point it out! Anyway it is now fixed by adding the jsonschema package in the pip install.

Hmmm on closer look, #299 did add that dependency, but it got missed in my PR as it was not synced, my bad.


feature request: type guards for multi params

Search Terms

Suggestion

Use Cases
Examples
import { isString, isNubmer } from "util";

function Case(name?: string, symbol?: string, decimals?: number): name is string => {
  return isString(name) && isString(symbol) && isNumber(decimals);
};

not only name is string but symbol is string && decimals is nubmer
Checklist
My suggestion meets these guidelines:

[x] This wouldn't be a breaking change in existing TypeScript / JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. new expression-level syntax)

I think this is a duplicate of #26916


Update environment files in README.md

/ok to test

@charlesbluca just FYI, if any of the commits in a PR are unsigned then we must run comment /ok to test .

Ah sorry, CI is still blocked on https://github.com/rapidsai/ucxx/actions/runs/7064086285/job/19231802776?pr=137#step:7:1039. 🙁

/ok to test

Thanks @charlesbluca !

/merge


Merge changes from PR #58 and updated visuals + fix headings

@holtskinner thanks for the changes on readability.  Can we close #58 and merge this instead as we had to update and some more visuals to the notebook and make some minor changes ?


Cloud Firestore - Transaction error: The referenced transaction has expired or is no longer valid

We are occasionally seeing Firebase transaction errors indicating that the transaction has expired or is no longer valid:
"message": "The referenced transaction has expired or is no longer valid."
"code": 3
"status": "INVALID_ARGUMENT"
"details": []
This does not happen consistently but we are trying to understand why this happens and what to do when this does happen.
Environment details

OS: Linux
PHP version: 7.4.26
Package name and version: google/cloud-firestore 1.21.0

Steps to reproduce

This only happens pretty rarely but it is causing issues when it does happen.

Code example
$firestoreClient->runTransaction(function (Transaction $transaction) use ($documentRef, $schedule) {
          $snapshot = $transaction->snapshot($documentRef)->data();
          $snapshot['serverData'] = $schedule['data'];

          if (!empty($schedule['timestamps'])) {
            $snapshot['timestamps'] = $schedule['timestamps'];
          }
          else {
            unset($snapshot['timestamps']);
          }

          $snapshot['serverLastUpdatedTimestamp'] = $schedule['last_updated'];

          if (!empty($schedule['inProgressData'])) {
            $snapshot['inProgressData'] = $schedule['inProgressData'];
          }

          if (isset($snapshot['inProgressData']) && $snapshot['inProgressData'] == $snapshot['serverData']) {
            unset($snapshot['inProgressData']);
          }
          $transaction->set($documentRef, $snapshot);
        });

Making sure to follow these steps will guarantee the quickest resolution possible.
Thanks!

@envision-it-dev  with the provided information its very difficult to narrow down this problem.
One recommendation is to create transaction and document reference just before the runTransaction since as per the documentation, it can fail otherwise.


Container screen does not update when starting/stopping containers

I have 1 container installed (a LimeSurvey install). Whenever I start/stop a container, the container screen does not update - the container logs do not update, and the web preview does not appear. I have to go to another screen (e.g. New Container) and then go back to the container to see the UI update.
Demo 1 (starting a container): https://gfycat.com/BronzeVacantAquaticleech

Demo 2 (stopping a container): https://gfycat.com/SpitefulConcernedGlowworm

Potentially related to #535 and #622.
Kitematic 0.9.3
Installed with Docker Toolbox
Docker version 1.9.1, build a34a1d5
Mac OS X 10.11.1 (15B42)

@markbao Thank you for the awesome screen shots/gif. We revamped the entire log system for the upcoming 0.9.4 release which will fix this issue.
Keep an eye out for the next update :)

Oh that's great news! Thank you very much :)


i think solderer is too slow to make tons of things

Issue description:
need fast solderer
What happens:
no fast solderer
What you expected to happen:
fast solderer that can craft items per tick
Steps to reproduce:
1.craft 8 64k disk
2.I CANNOT WAIT
3.plz
...
Version (Make sure you are on the latest version before reporting):
using skyfactory 3.0.6

Minecraft: 1.10.2
Forge:
Refined Storage:

Does this issue occur on a server? [yes/no]
nope
If a (crash)log is relevant for this issue, link it here:
[pastebin/gist/etc link here]

I disagree. You can:

Have multiple solderers for different parts
In 1.11, multiple solderers can work together on the same recipe

Also there are speed upgrades which help a lot. :)


Apart from human action can we also detect the objects in the frame??

Thanks for playing with Activity2Vec!
Activity2Vec aims at understanding human actions in general scenarios (w/ or w/o interacted objects). Therefore, we simplified the codebase and excluded the object detection module. See our previous codebase HAKE-Action if you need it.

Thanks for the reply. There are many repo's in HAKE-Action, can you please specify any. I have gone through TIN from HAKE. I found it very interesting. Is there any better guide to setup and train or inferencing.

Can I use it for real-time action detection and also is there any way to optimize the time to process frames??


Can't go get this tool

➜  ~ go get -v github.com/smallnest/gen
github.com/smallnest/gen (download)
github.com/denisenkom/go-mssqldb (download)
github.com/golang-sql/civil (download)
get "golang.org/x/crypto/md4": found meta tag get.metaImport{Prefix:"golang.org/x/crypto", VCS:"git", RepoRoot:"https://go.googlesource.com/crypto"} at //golang.org/x/crypto/md4?go-get=1
get "golang.org/x/crypto/md4": verifying non-authoritative meta tag
golang.org/x/crypto (download)
github.com/droundy/goopt (download)
github.com/gobuffalo/packd (download)
github.com/gobuffalo/packr (download)
github.com/gobuffalo/logger (download)
github.com/sirupsen/logrus (download)
get "golang.org/x/sys/unix": found meta tag get.metaImport{Prefix:"golang.org/x/sys", VCS:"git", RepoRoot:"https://go.googlesource.com/sys"} at //golang.org/x/sys/unix?go-get=1
get "golang.org/x/sys/unix": verifying non-authoritative meta tag
golang.org/x/sys (download)
github.com/karrick/godirwalk (download)
github.com/markbates/errx (download)
github.com/markbates/oncer (download)
github.com/markbates/safe (download)
github.com/jimsmart/schema (download)
github.com/jinzhu/gorm (download)
package github.com/jinzhu/gorm/dialects/mysql: cannot find package "github.com/jinzhu/gorm/dialects/mysql" in any of:
	/usr/local/Cellar/go/1.14.2_1/libexec/src/github.com/jinzhu/gorm/dialects/mysql (from $GOROOT)
	/Users/nil/go/src/github.com/jinzhu/gorm/dialects/mysql (from $GOPATH)
github.com/lib/pq (download)
github.com/logrusorgru/aurora (download)
github.com/mattn/go-sqlite3 (download)
github.com/bxcodec/faker (download)
github.com/davecgh/go-spew (download)
github.com/iancoleman/strcase (download)
github.com/jinzhu/inflection (download)
github.com/ompluscator/dynamic-struct (download)
github.com/serenize/snaker (download)
➜  ~ echo $?
1

Looks like it fails on
package github.com/jinzhu/gorm/dialects/mysql: cannot find package "github.com/jinzhu/gorm/dialects/mysql" in any of:
	/usr/local/Cellar/go/1.14.2_1/libexec/src/github.com/jinzhu/gorm/dialects/mysql (from $GOROOT)
	/Users/nil/go/src/github.com/jinzhu/gorm/dialects/mysql (from $GOPATH)

p.s. Maybe you could vendor deps to ensure they are always there?

enable go module.
export GO111MODULE=on

Ok, it works! Thanks!


add timestamp to handshake

Supercedes #167 . It's better because:

it invalidates old streams without requiring any old state, meaning if the program crashes and restarts, it'll invalidate any old streams as long as timestamp is  monotonically increasing ¹ ²
it's also simpler and requires less book-keeping code in hyperswarm
a timestamp is shorter than a noise stream id
a timestamp is the same length as a udx stream id, but doesn't suffer from relays changing the udx stream id

¹  Date.now() is not guaranteed to be monotonically increasing, but since fast reconnects are not mission critical, it should suffice, since it'll succeed "all" the time for practical purposes.
² According to MDN, performance.timeOrigin + performance.now() is guaranteed to be monotonically increasing. But I don't think the performance global is available in bare JS environments.

Closed in favor of https://github.com/holepunchto/hyperswarm/pull/178


Modifying manifests

I have an interesting case where my modified api servers manifests are reverted somehow. I wanted to enabled batch api for enabling cronjobs of kubernetes but had some issues.

What is the cause of this revert?
What is the correct way to modify them?

Because cloud-init in coreos run every time that the machine complete the boot
Modify user-dat in etcd instances, you need to stop the instance, and create a new launch configuration to auto scaling.

I have a production setup. Can I do this operation in a safe manner? :)

terraform plan -target=module.etcd.aws_instance.etcd[0]

displays only 1 instance. Can I do in this way? What do you think?

https://github.com/kz8s/tack/issues/75#issuecomment-258558846

Yes, you can use this procedure. But the step one is outdated, tack no more storage manifests on s3, you will need to edit the user-data for worker nodes.

terraform plan -target=module.etcd.aws_instance.etcd[0]

I think that it cant work, because you need to stop the instance to modify user-data

when you change user data, terraform destroys and recreates instance. Do you think that it is doable in this way?

Yes, but you need to do it instance by instance in masters, or you will get etcd unhealthy

Actually that is why I wrote etcd[0] because I was considering to do one by one.

Nice, I think that it work

I will also upgrade cluster as well. The order is matters? I mean masters first than I should update workers?


Feat: Featuring all the contributors on the page

Describe the feature
All the Contributors of the project will be displayed on the page in carousel or card format .
@vansh-codes You can suggest the format for me to proceed on.
I wish to extract the info using github API and display according with good UI .
Add ScreenShots
.
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm GSSOC'24 Extd registered Contributor
[X] I'm Hacktoberfest registered Contributor
[X] I want to work on this issue

https://github.com/user-attachments/assets/16286c46-8938-4e0f-be6a-a1807dacb46e
@vansh-codes Check it out and tell if any changes are there .
Else I can raise a PR.

Create a separate dedicated page for contributors, create route /contributors
Put its link in the footer
Open Source ❤ | Contributors | Gityzer

Ok @vansh-codes I Will do that and update you .

Sure @Akshithsaai
Also whats the status of image generation issue?

@vansh-codes I have updated according your suggestion.
Please check it out .
https://github.com/user-attachments/assets/f9d5e8ea-f84d-41e8-a251-f66631e83de9

Sure @Akshithsaai Also whats the status of image generation issue?

I am working on it @vansh-codes .


weird feature rendering base on zoom

I have an issue with feature rendering. The video shows it on iOS but i have the same problem on ios.
I don't understand why some peaks are appearing and disappearing. It does not seem to be related to the vector tile containing the peak or not as it happing during "float" zoom between for example 13 and 14
I use carto.streets,contours
Here is the mss related to peaks.
#mountain_peak {

      shield-name: @name + '\n'  + [ele] + 'm';
      shield-face-name: @mont;
      shield-size: 11;
      shield-file: @peak_shield;
      shield-unlock-image: true;
      shield-fill: @peak_label;
      shield-halo-fill: @peak_halo;
      shield-halo-radius: 1;
      shield-halo-rasterizer: fast;
      shield-placement: [nuti::texts3d];
      shield-text-dy: 10;
      shield-text-dx: 0;
      shield-line-spacing: -2;
}

I can send an example if necessary. It actually a nativescript module example.

@farfromrefug The latest version of the tiles is now live. Can you test and check if the issue is now fixed? Thanks.

@mtehver I tried with the rc2 and it's definitely better ! Thanks a lot

Actually i still see the issue on Android. This is really weird because on ios with rc2 i dont see the issue. But on android i do. I use the same source carto.streets, i cleared the cache (even removed the app), and i still see the issue.
Is it not only related to the online source and not the sdk itself?

Strange, as this is an issue with the tiles (missing ids), not SDK. RC2 itself does not contain any changes related to this. BTW, are you using online tiles? I believe we have only fixed this for online tiles. Our offline packages are not yet updated.

@mtehver any news on this one?

Closing this, SDK 4.2.0 has 'feature-id' CartoCSS properties to fix the issue.

@mtehver i would like to reopen that issue.
I am still seeing this with shields (so no feature-id) need on the 4.3.0.RC1

The gif is not of great quality(could not do better on github) but if you look at the center You will see that depending on zoom in/out we dont get the same feature to render.
Here is the corresponding rule:
#mountain_peak {
	shield-name: @name ?  ( [ele] ? [ele] + 'm' + '\n ' + @name : @name): '';
	shield-face-name: @mont_md;
	// shield-size: 9;
	shield-size: linear([view::zoom], (7, 6), (13, 8), (18, 12))- 0.000001 * [rank];
	shield-line-spacing: 10;
	shield-file: url(symbols/[class].svg);
	shield-fill: @peak_label;
}

It is a very simple rule and i use the rank + font size to give "order" as you explained.
It should always follow the same rule .
And in this case it should always show Mont Blanc because it has a rank of 1

I want to add something more on this .
I just saw something weird on line labels.
If you look at the gif. When zooming slowly (beginning) the label disappear pretty fast
But if i do it fast i can see that it can actually draw on the line when zoomed out.
I have no min distance nor spacing set on the text


fix: scroll error into view with nested key names

Hello! I ran into an error when using nested fields with the option scrollErrorIntoView: true
The addon code evaluates to document.querySelector('[name=fields.nestedfield]') and throws the following exception:
Uncaught DOMException: Failed to execute 'querySelector' on 'Document': 'name=fields.nestedfield' is not a valid selector.
The fix is to replace . with \\. in the query selector, i.e document.querySelector('[name=fields\\.nestedfield]')
Thank you!

Hey @staffe !
Thanks for pointing out this issue and for the provided fix. We will have a look at it as soon as possible.
Cheers

@staffe Could you please rebase onto upstream/main so the pipeline can run again and we can proceed with merging your PR.

@staffe Could you please rebase onto upstream/main so the pipeline can run again and we can proceed with merging your PR.

Thanks, I've synced my fork

@staffe Could you please rebase onto upstream/main so the pipeline can run again and we can proceed with merging your PR.

Thanks, I've synced my fork

Glad for the quick response. It seems like you have to run yarn lint:fix und push again. ;)

I see, sorry about that. It should be sorted now

No need to be sorry. Thanks for your contribution.


Ref/remove deprecated

Coverage decreased (-0.5%) to 94.237% when pulling 5010711f89016d8f25e74055c26ade90a6285998 on isocolsky:ref/remove-deprecated into 6ee7132455d54e8d37d7dcd40f53ec8caa7dcbc4 on bitpay:master.

ACK!


LiteX Driver Development

Update implementation for the LiteX Thunderscope driver.

I would like to get this PR updated and merged in soon so we can stay in sync.  Do you have any preference on how we package the tslitex.dll with this?  Currently I've been building it separately and copying the dll into the ts.net.engine build folder.  Alternatively, we could add the libtslitex repo as a submodule here and integrate that build into your build scripts.
As for updates, I need to go through what's changed in the driver interface recently, add the calibration handling, and finish implementing the device list/query.

Ideally there would be a Action on your repository to build the DLL and then that can be copied into this repo as-is.
For now, could you put an x64 DLL in the source/TS.NET/Drivers/LiteX/Interop directory? The csproj can be modified to always copy this to the build directory.

I'm not a fan of adding binaries to git.  If I set up a build action for the libtslitex repo, You think you would want your build script to just download the DLL from a Github release package?
Right now I'm thinking to merge this with the current functionality (after we decide on the DLL inclusion above) and I'll start a new branch for building up the configuration get/set path.

For now, I just added handling not to delete the library file if one is present.  For now I think we can rely on manually installing it during development.  It should only be needed if configured to use the LiteX HardwareDriver in the yaml.

Looks good! I'm looking forwards to try it out.


1.19.2

Your Idea
When will this be ported to 1.19.2?
Discord username (if you want updates)
Moz#3493

#304


Links to failure lists don't work in Firefox

STEPS TO REPRODUCE (in Firefox):

Load https://web-confluence.appspot.com/#!/confluence
Click "FAILURE TO SHIP".
Select any data point (the first data point at the "550" level for Safari, aka Safari 8.0, will do).
Click the little box-with-arrow after the number in the resulting popup.

EXPECTED RESULTS: Opens the actual list of things failing to ship in a new tab.  That's what it does in Chrome and Safari.  I can't test what it does with Edge, because in Edge I don't see the graph at all.
ACTUAL RESULTS: Nothing happens.
It's entirely possible that this is a Firefox issue, of course.  I'm happy to do some debugging, but it would be fairly helpful to know what the site is actually trying to do here, without having to reverse-engineer it from the minified source.

I think this ends up calling https://github.com/GoogleChrome/confluence/blob/6677a3eb49604580866cd7aa95b26ba63b44cb50/lib/chart/browser_metric_chart.es6.js#L33-L35 which calls https://github.com/GoogleChrome/confluence/blob/6677a3eb49604580866cd7aa95b26ba63b44cb50/lib/chart/browser_metric_chart.es6.js#L9-L11 but I'm not sure yet where that createNewView ends up being implemented in the end.

This is caused by using a synthetic <a>.click(). "Download CSV" is probably also affected. I'm half-done a fix, but probably can't land it until early next week.

This is caused by using a synthetic <a>.click()

Is the anchor not in a document?  Looks like until 8 hours ago https://github.com/whatwg/html/issues/2615 was open with discussion of what the actual behavior should be....

Thank you!


Rewrite DEGIRO converter

Complete rewrite of the DEGIRO converter, which is more flexible regarding the order in which lines are exported by DEGIRO.
Also add support for yearly product fees.
Fixes #19

This is still a work in progress and in my opinion an improvement over the current main code. I am in talks with another user that had some issues that I hope to resolve with these changes. After which I will merge this and then do another step in improving readability.
Im also planning some automated testing in #16 so everything becomes more predictable and whenever I need to change something in the future I have some guarantee it keeps working and don't have to do manual regression (which I what I do currently).

are you also plannint to support dividends in your new converter? currently it only does Buy and Sell orders

This version supports fees (eg. Exchange fee), buy & sell and also dividend.

i tried running it just now but dividends are not included in the export json.
also the fees seem to have some rounding on them? they are almost all 1, 2 or 0
one fee is 4.9 which is weird because this makes me wonder why the others are rounded

i guess you already use degiro but if you want my export, which is pretty big i can send it to you. it also had a few ISIN numbers it didn't find
Target for example which is think is quite weird because target isn't exactly a small or unknown company for yahoo finance

I do use DEGIRO myself yes, however if you could share (a portion) of your export that would be helpful, as I can also check the specific issues you mentioned about fees and perhaps find a reason why certain isin numbers aren't found.

Account.csv
also one peculiar thing that happened recently, you might see at the top of the csv file there is some weird stuff going on with dividends
this was a mistake on Degiro's side. they messed up my mcdonalds dividends (they fixed it by adding more dividend transactions)
but i wonder how your converted would react to this since i might not be the only one who this has happened to

i'm also interested in helping on this of course
perhaps tomorrow evening i'll have some time to spare and look at the code in more detail

i just saw that my export from degiro contains dutch csv headers, i can't find any setting to change this
do you know where i can change this?

I believe that is a DEGIRO thing, exporting in your current locale. However it should not matter what language the header is, as the header are always on the same position, no matter which language, so they can be mapped easily.
I havent had time to look at the dividend issue last weekend due to some personal things but will look into it tomorrow or friday.

@Joren-vanGoethem I ran your export file through the tool and found some more fields that should be skipped. I wanted to look at the file that would be generated, but I am currently rate limited by Yahoo Finance,
EDIT: The rate limit is gone so I was able to run the tool once more. See the ghostfolio-degiro.json
It does contain dividend records for me, however fees are empty as you also stated. Will look into those now.

@dascgit I have reworked the DEGIRO converter in this changeset, which also changes the way dividend records are processed. If I remember correctly, your exports were in Germen, right? Could you give me the description for a "dividend tax" fee record, e.g. "Dividenbelasting" in Dutch? That way I can add it to the control that checks for the record and thay way dividend tax records from a German language are also processed correctly. Thanks a bunch!

onverter in this changeset, which also changes the way dividend records are processed. If I remember correctly, your exports were in Germen, right? Could you give me the description for a "dividend tax" fee record, e.g. "Dividenbelasting" in Dutch? That way I can add it to the control that checks for the record and thay way dividend tax records from a German language are also processed correctly. Thanks a bunch!

Sorry @dickwolff for my late response. I no longer have a degiro account and I cant provide the informations.

No worries, thanks for your response though!


Support setting idle timeout time function based on data flow

What type of PR is this?

feat: Support setting idle timeout time function based on data flow
What this PR does / why we need it:
EG currently does not support setting idle timeout times based on data streams. This PR supports this feature
Which issue(s) this PR fixes:

Fixes #3108

/retest

/retest

This PR seems does not fix #3108 (adding an end-to-end test for current idleTimeout api), please change it, if the issue you are trying to fix does not exist, feel free to create a new one.

the PR doesnt match the issue, the issue talks about adding an e2e and the PR is adding a new API field for StreamIdleTimeout

close in favour of #3672


Cannot build on OS X - bootstrapper.sh script is for windows

I tried to download and build the SkiaSharp library, and run the Xamarin.Forms demo project ( Skia.Forms.Demo.sln ), but when I open it in Xamarin Studio I get this error:
Restoring packages...
Unable to find version '1.53.0-beta' of package 'SkiaSharp'.

It seems that there is no up to date Nuget package.
I tried to build the SkiaSharp package myself then.
I followed the Readme, but without success.
The following are the instructions from the Readme file:
## Building SkiaSharp

First clone the repository:

    $ git clone https://github.com/mono/SkiaSharp.git

Next, set up the submodules:

    $ cd SkiaSharp
    $ git submodule init && git submodule update

Then follow the platform-specific instructions below.

### Mac OS X

Run from Bash

    $ ./bootstrapper.sh -t libs

This runs the build process by using the `libs` build target.

The first steps worked, but the third one gives error:
bash-3.2$ ./bootstrapper.sh -t libs
./bootstrapper.sh: line 42: [: too many arguments
./bootstrapper.sh: line 47: [: too many arguments
./bootstrapper.sh: line 57: [: too many arguments
./bootstrapper.sh: line 84: pushd: /Users/Admin/Projects/XAMARIN: No such file or directory
Cannot open assembly '/Users/Admin/Projects/XAMARIN': No such file or directory.
Could not restore NuGet packages.
bash-3.2$

I checked inside the bootstrapper.sh file, and it seems to me that the script is for Windows, not for OS X as reported in the docs!  There is NO documentation on how to build it on OS X!
Please help.

@Emasoft Sorry about that. We are busy releasing this version right now. It should be up very soon.


Implement same arrow navigation in dropdown component as in multiselect component

Started using shadcn, so gonna slowly swap out all custom dropdown menus with dropdown menus from shadcn


fix: chaiing the user authentica and function call

Description
kjabsd,fkjbsdhafl. asdfuasdf sdafsdfhsadf sadf  sodfhsdfsd f nema sdkbfdf
Fixes #442

this is dummy PR, I am deleting it


make clean does not remove output directory

[*] make clean
SELFTESTERR=0; for DIR in ./selftest/iterators ./selftest/map-pin-info ./selftest/map-update ./selftest/perfbuffers ./selftest/ringbuffers ./selftest/uprobe ./selftest/version ./selftest/map-batch ./selftest/tcpconnect ./selftest/tc ./selftest/create-map ./selftest/error-handling ./selftest/spinlocks ./selftest/percpu ./selftest/set-attach ./selftest/tracing ./selftest/probe-features ./selftest/object-iterator ./selftest/atomic-operations ./selftest/xdp; do echo "INFO: entering $DIR..."; make -j8 -C $DIR  clean || SELFTESTERR=1; done; if [ $SELFTESTERR -eq 1 ]; then exit 1; fi
INFO: entering ./selftest/iterators...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/iterators'
rm -f *.o *-static *-dynamic
make[1]: Leaving directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/iterators'
INFO: entering ./selftest/map-pin-info...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/map-pin-info'
rm -f *.o *-static *-dynamic
make[1]: Leaving directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/map-pin-info'
INFO: entering ./selftest/map-update...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/map-update'
rm -f *.o *-static *-dynamic
make[1]: Leaving directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/map-update'
INFO: entering ./selftest/perfbuffers...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/perfbuffers'
rm -f *.o *-static *-dynamic
make[1]: Leaving directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/perfbuffers'
INFO: entering ./selftest/ringbuffers...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/ringbuffers'
rm -f *.o *-static *-dynamic
make[1]: Leaving directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/ringbuffers'
INFO: entering ./selftest/uprobe...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/uprobe'
rm -f *.o main-static main-dynamic ctest gotest
make[1]: Leaving directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/uprobe'
INFO: entering ./selftest/version...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/version'
make[1]: *** No rule to make target 'clean'.  Stop.
make[1]: Leaving directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/version'
INFO: entering ./selftest/map-batch...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/map-batch'
rm -f *.o *-static *-dynamic
make[1]: Leaving directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/map-batch'
INFO: entering ./selftest/tcpconnect...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/tcpconnect'
make[1]: *** No rule to make target 'clean'.  Stop.
make[1]: Leaving directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/tcpconnect'
INFO: entering ./selftest/tc...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/tc'
rm -f *.o *-static *-dynamic
make[1]: Leaving directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/tc'
INFO: entering ./selftest/create-map...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/create-map'
rm -f *.o *-static *-dynamic
make[1]: Leaving directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/create-map'
INFO: entering ./selftest/error-handling...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/error-handling'
rm -f *.o *-static *-dynamic
make[1]: Leaving directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/error-handling'
INFO: entering ./selftest/spinlocks...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/spinlocks'
make[1]: *** No rule to make target 'clean'.  Stop.
make[1]: Leaving directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/spinlocks'
INFO: entering ./selftest/percpu...
make[1]: Entering directory '/home/rotscale/go/src/github.com/aquasecurity/libbpfgo/selftest/percpu'
make[1]: *** No rule to make target 'clean'.


issue found on: export_test.go#L35 Completer is unused (deadcode)

an issue has been detected in source code: export_test.go#L35 Completer is unused (deadcode)

Fixed already in tests.


astyle allow version 3.1

Circleci builds (OSX) are failing because astyle v3.1 is now being installed. Let's see if we can tolerate the additional version without code changes.

@LorenzMeier low priority, but we'll need to find a solution here. The current astyle installed via homebrew won't work with PX4.


Required input is missing

Prompt outputs failed validation
ApplyVisualStyle:

Required input is missing: reference_cond
Required input is missing: positive
Required input is missing: negative

Try to delete and recreate Apply Visual Style Prompting node


Why unshiftAll and pushAll exists only for Stack?

Documentation doesn't mention them for List nor any other structure. Also, I don't see much value in having these all functions with ES6.

Yeah, these should probably be replaced by using concat. Good suggestion.


Change header sizes

See discussion on #129.
Most of the mobile-only CSS header sizes are unnecessary repetition, so I have removed them. Changing 4.8 to 4.0 for H1 on mobile seemed unnecessary as well, because doing so compromises the visual difference between h1 and h2.

Before

### After

Sorry for the delay @nateberkopec. I liked the improvement, I will analyze it today. Thanks for the contribution, I really appreciate it.


Codecov badge shows coverage unknown

The codecov badge in the README.md shows coverage:unknown. On codecov it says: "Unable to retrieve commit from GitHub API. Please check that your bot user has authorization to kgryte/shields-badge-url-codecov." I can make a pr if you'd like it done by travis push instead of by git hook?

@feldoh I am not sure what happened. Not sure if codecov changed an API endpoint, or GitHub did, or something else. I have been seeing the unknown status on quite a few repos and I am not sure why, as all these badges were showing the correct status when initially written and published.

Apparently, codecov needs access to private repos. Updated account settings and now the link above no longer has the bot message, but the badge still has not updated to show the coverage.

Reran the build. Badge now shows coverage. Closing.

The badge displays "unknown" for this public repository.
Travis CI build shows "passing". I've added codecov in .travis.yml.
How do I make sure that "coverage" is displayed?


Implement Node API for new AST

This task is automatically imported from the old Task Issue Board and it was originally created by Keziah Wesley.
Original issue is here.

Implement the double_representation Node API for the new types.
Notes
The NodeLocation types and logic will be affected by the UTF-16 work in the parser.
Blockers:
#182807114 blocked

Transition completed in #4113


RTL arrow in wrong direction

Per @spacedmonkey during bug bash
Should be opposite this:

And this.


Add support of new f-Strings format for --rts, --replacetostr feature

Functionnality
Description
Add support of new f-Strings format (PEP 498) appeared at python3.6 for --rts, --replacetostr feature
Example

f-strings format

arg1 = "2"
arg2 = "6"
p = f'{arg1} / {arg2}'
print(p)

feature abandoned (project not maintained anymore)


win7 x86 support   (win32)

file:  a.rb   ( oneline )  :

p RUBY_DESCRIPTION

C:\Users\Administrator>ocran a.rb
=== Loading script to check dependencies
"ruby 3.2.2 (2023-03-30 revision e51014f9c0) [i386-mingw32]"
...
LZMA 22.01 (x86) : Igor Pavlov : Public domain : 2022-07-15
Input size:  9667016 (9 MiB)
Output size: 2436907 (2 MiB)
=== Finished building a.exe (2485567 bytes)
C:\Users\Administrator>a.exe
This version of C:\Users\Administrator\a.exe is not compatible with the version
of Windows you're running. Check your computer's system information to see wheth
er you need a x86 (32-bit) or x64 (64-bit) version of the program, and then cont
act the software publisher.
C:\Users\Administrator>systeminfo | findstr -i type
System Type:               X86-based PC
C:\Users\Administrator>ver
Microsoft Windows [Version 6.1.7601]

Hi! You can fork the repository and use an older LZMA version. Alternatively you can look into the documentation how to not use lzma.
You can also use an older ruby version with ocra.
We won't support 32bit.


VMware Desktop Support

I am trying to use molecule with Vagrant and the VMware Desktop provisioner, but it seems to be getting confused by the warning that Vagrant throws in regards to the ethernet device.
Error:
### 2020-11-04 14:26:54 ###
### 2020-11-04 14:26:54 ###
WARNING: The VMX file for this box contains a setting that is automatically overwritten by Vagrant
WARNING: when started. Vagrant will stop overwriting this setting in an upcoming release which may
WARNING: prevent proper networking setup. Below is the detected VMX setting:
WARNING:
WARNING:   ethernet0.pcislotnumber = "33"
WARNING:
WARNING: If networking fails to properly configure, it may require this VMX setting. It can be manually
WARNING: applied via the Vagrantfile:
WARNING:
WARNING:   Vagrant.configure(2) do |config|
WARNING:     config.vm.provider :vmware_desktop do |vmware|
WARNING:       vmware.vmx["ethernet0.pcislotnumber"] = "33"
WARNING:     end
WARNING:   end
WARNING:
WARNING: For more information: https://www.vagrantup.com/docs/vmware/boxes.html#vmx-allowlisting
Vagrant timed out while trying to start the VMware machine. This
error is caused by VMware never successfully starting the machine.
This can often be fixed by simply retrying. If the error persists,
please verify that VMware is functional. This is not a Vagrant
issue.
### 2020-11-04 14:29:27 ###
### 2020-11-04 14:29:27 ###
An error occurred while executing `vmrun`, a utility for controlling
VMware machines. The command and output are below:

Command: ["start", "/Users/kclinden/.cache/molecule/windows-molecule/default/.vagrant/machines/windows-2016/vmware_desktop/8bf25d5a-002e-43dc-a19b-aef6c71d1a53/packer-vmware-iso.vmx", "nogui", {:notify=>[:stdout, :stderr], :timeout=>45}]

Stdout: 2020-11-04T14:30:04.966| ServiceImpl_Opener: PID 39569
Error: The operation was canceled

Stderr:
### 2020-11-04 14:33:24 ###
### 2020-11-04 14:33:24 ###
There are errors in the configuration of this machine. Please fix
the following errors and try again:

VMware Desktop Provider:
* The following settings shouldn't exist: vmware

### 2020-11-04 14:34:04 ###
### 2020-11-04 14:34:04 ###
There are errors in the configuration of this machine. Please fix
the following errors and try again:

VMware Desktop Provider:
* The following settings shouldn't exist: vmware

### 2020-11-04 14:39:41 ###
### 2020-11-04 14:39:41 ###
An error occurred while executing `vmrun`, a utility for controlling
VMware machines. The command and output are below:

Command: ["start", "/Users/kclinden/.cache/molecule/windows-molecule/default/.vagrant/machines/windows-2016/vmware_desktop/8bf25d5a-002e-43dc-a19b-aef6c71d1a53/packer-vmware-iso.vmx", "nogui", {:notify=>[:stdout, :stderr], :timeout=>45}]

Stdout: 2020-11-04T14:40:10.375| ServiceImpl_Opener: PID 40610
Error: The operation was canceled

Stderr:

Attached is with VAGRANT_DEBUG=DEBUG on.
vagrant-windows-2016.txt

Is there any reason why running VMWare Desktop would be more beneficial than just running plain VirtualBox for molecule testing? Genuinely curious.

I use fusion and not vbox

@kclinden :
Did you try starting manually the vagrant machine with vagrant up from the folder /Users/kclinden/.cache/molecule/windows-molecule/default/.vagrant/ ?
I'm also concerned by the message:
VMware Desktop Provider:
* The following settings shouldn't exist: vmware

This smells like an error in the generated Vagrantfile or in the vagrant.yml file. Can you look at their content ?
Can you also try vagrant validate ? I don't remember exactly what's checked by this command but it may still be an interesting test.

@kclinden  Hi. Any news about this bug ? If you have time, can you also try with the master branch ?

@kclinden  Hi. Any news about this bug ? If you have time, can you also try with the master branch ?

Things should be better with latest releases. Can you confirm it's solved or not after updating ?

Given that there has been no news about this bug for quite some time and I have hope it has been fixed, I'm going to close this bug [ mainly to clean things ]. Please reopen the bug if this bug is still there.


Fix partially outdated GPG documentation

Why:
Closes: #24095

What's being changed (if available, include any code snippets, screenshots, or gifs):
Following @isaacmbrown instructions, I updated the content on step 4 and step 7.

Check off the following:

[x] I have reviewed my changes in staging (look for the "Automatically generated comment" and click the links in the "Preview" column to view your latest changes).
[x] For content changes, I have completed the self-review checklist.

@alexis-opolka Looks good, thanks for the change!


Funding the SPDX python library

The OpenSSF TAC approved this, more details to follow

I'm sure @joshbressers already knows this, but in case others are reading:
In the end, only the OpenSSF Governing Board (GB) can approve OpenSSF funding. That said, the GB always wants to hear a review from the TAC first (which I think is quite sensible). At this point, the OpenSSF TAC recommended approving the funding of this work. This proposal will now be sent in the next day or two to the GB for approval.  It's the GB to decide, but since the TAC unanimously approved it, I'd guess the odds are good.

The GB has approved this proposal 🎉