Adaptive Cards Support

To continue #3503.
Credit to @aw1cks provided the original code, I slightly tweaked it.
Notables from that feature request:

MessageCards is deprecated, MSTeams integration should support AdaptiveCards
The original proposal suggested that by switching the payload format to adaptive web cards, the responsibility for creating valid adaptive cards is entirely upon the user's template. Additionally, perhaps this could be a config option.
I rest the case with the Alertmanager team for the option of a config option versus hard cutover.
I have two template examples. One is raw key/value, the other cleans things up.

Firing
Template 1 (Fancy)

Template 2 (Key/ Value)

Resolved
Template 1 (Fancy)

Template 2 (Key/ Value)

Template 1 (Fancy)
Label / Annotations View:

Silences:
Template 1 (Fancy)
Uses .CommonLabels

 Click to view key/value Template
{{ define "msteams.ddefault.text" }}
{
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "type": "AdaptiveCard",
    "version": "1.2",
    "padding": "None",
    "msteams": {
        "width": "Full"
    },
    "body": [
        {
            "type": "Container",
            "id": "alert-msg",
            "padding": "Default",
            "items": [
                {
                    "type": "TextBlock",
                    "id": "alert-summary-title",
                    "text": "[{{- if gt (len .Alerts.Firing) 0 }}FIRING: {{ .Alerts.Firing | len }}] 🔥 {{end}} {{- if gt (len .Alerts.Resolved) 0 }}RESOLVED: {{ .Alerts.Resolved | len }}] ✅ {{end}} {{ with index .Alerts 0 -}}{{ .Labels.alertname }}{{ end }}",
                    "weight": "Bolder",
                    "color": "{{- if gt (len .Alerts.Firing) 0 }}Attention{{end}}{{- if gt (len .Alerts.Resolved) 0 }}Good{{end}}",
                    "size": "ExtraLarge",
                    "horizontalAlignment": "Left"
                },
                {{ if gt (len .Alerts.Firing) 0 }}
                {{ range $index, $alert := .Alerts.Firing }}
                {
                    "type": "TextBlock",
                    "id": "alert-{{ $index }}-label-title",
                    "text": "Labels",
                    "weight": "Bolder",
                    "size": "Medium",
                    "horizontalAlignment": "Left"
                },
                {
                    "type": "FactSet",
                    "facts": [
                        {{ range $key, $value := $alert.Labels}}
                        {
                            "title": "{{ $key }}",
                            "value": "{{ $value }}"
                        },
                        {{ end }}
                        {
                            "type": "TextBlock",
                            "id": "alert-{{ $index }}-annotations-title",
                            "text": "Annotations",
                            "weight": "Bolder",
                            "size": "Medium",
                            "horizontalAlignment": "Left"
                        },
                        {{ range $key, $value := $alert.Annotations}}
                        {
                            "title": "{{ $key }}",
                            "value": "{{ $value }}"
                        },
                        {{ end }}
                        {}
                    ]
                },
                {{ end }}
                {{ end }}
                {{ if gt (len .Alerts.Resolved) 0 }}
                {{ range $index, $alert := .Alerts.Resolved }}
                {
                    "type": "TextBlock",
                    "id": "alert-{{ $index }}-label-title",
                    "text": "Labels",
                    "weight": "Bolder",
                    "size": "Medium",
                    "horizontalAlignment": "Left"
                },
                {
                    "type": "FactSet",
                    "facts": [
                        {{ range $key, $value := $alert.Labels}}
                        {
                            "title": "{{ $key }}",
                            "value": "{{ $value }}"
                        },
                        {{ end }}
                        {
                            "type": "TextBlock",
                            "id": "alert-{{ $index }}-annotations-title",
                            "text": "Annotations",
                            "weight": "Bolder",
                            "size": "Medium",
                            "horizontalAlignment": "Left"
                        },
                        {{ range $key, $value := $alert.Annotations}}
                        {
                            "title": "{{ $key }}",
                            "value": "{{ $value }}"
                        },
                        {{ end }}
                        {}
                    ]
                },
                {{ end }}
                {{ end }}
                {{ with index .Alerts 0 }}
                {
                    "type": "TextBlock",
                    "id": "alert-annotations-title",
                    "text": "Source: {{ .GeneratorURL }}",
                    "weight": "Bolder",
                    "size": "Medium",
                    "horizontalAlignment": "Left"
                }
                {{ end }}
            ]
        }
    ]
}
{{ end }}

Click to view fancy Template
{{ define "new.text" }}
{
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "type": "AdaptiveCard",
    "version": "1.2",
    "padding": "None",
    "msteams": {
        "width": "Full"
    },

    "body": [
        {
            "type": "Container",
            "id": "alert-msg",
            "padding": "Default",
            "items": [
                {
                    "type": "TextBlock",
                    "id": "alert-summary-title",
                    "text": "[{{- if gt (len .Alerts.Firing) 0 }}FIRING: {{ .Alerts.Firing | len }}] 🔥 {{end}} {{- if gt (len .Alerts.Resolved) 0 }}RESOLVED: {{ .Alerts.Resolved | len }}] ✅ {{end}} {{ with index .Alerts 0 -}}{{ .Labels.alertname }}{{ end }}",
                    "weight": "Bolder",
                    "color": "{{- if gt (len .Alerts.Firing) 0 }}Attention{{end}}{{- if gt (len .Alerts.Resolved) 0 }}Good{{end}}",
                    "size": "ExtraLarge",
                    "horizontalAlignment": "Left"
                },
                {
                    "type": "Container",
                    "id": "alert-summary-container",
                    "padding": "None",
                    "items": [
                        {
                            "type": "TextBlock",
                            "id": "alert-summary-description",
                            "text": "{{ .Alerts.Firing | len }} alerts are firing",
                            "wrap": true
                        },
                         {
                            "type": "ActionSet",
                            "id": "alert-silence-action",
                            "actions": [
                                {
                                    "type": "Action.OpenUrl",
                                    "id": "silence",
                                    "title": "Silence",
                                    "url": "{{ .ExternalURL }}/#/silences/new?filter=%7B
                                    {{- range $key, $value := .CommonLabels }}
                                    {{- if eq $key "alertname" }}{{ $key }}%3D%22{{ reReplaceAll "\\\\" "" $value }}%22{{ end }}
                                    {{- end }}
                                    {{- range $key, $value := .CommonLabels }}
                                    {{- if ne $key "alertname" }}%2C{{ $key }}%3D%22{{ reReplaceAll "\\\\" "" $value }}%22{{ end }}
                                    {{- end -}}%7D"
                                },
                                {{ with $alert := index .Alerts 0}}
                                {
                                    "type": "Action.OpenUrl",
                                    "id": "prom",
                                    "title": "View in Prometheus",
                                    "url": "{{ .GeneratorURL }}"
                                }

                                {{ end }}

                            ]
                        }

                    ]
                },
                 {{ range $index, $alert := .Alerts.Firing }}
                {
                    "type": "Container",
                    "id": "{{ $index }}-alerts-container",
                    "isVisible": true,
                    "padding": "None",
                    "items": [

                        {
                            "type": "Container",
                            "id": "alert-{{ $index }}-msg-container",
                            "padding": "None",
                            "separator": true,
                            "items": [
                                {
                                    "type": "TextBlock",
                                    "id": "alert-{{ $index }}-summary",
                                    "text": "{{ $alert.Labels.alertname}}",
                                    "wrap": true,
                                    "size": "Medium",
                                    "weight": "Bolder"
                                },
                                {
                                    "type": "TextBlock",
                                    "id": "alert-{{ $index }}-description",
                                    "text": "{{ $alert.Annotations.description }}",
                                    "wrap": true,
                                    "weight": "Lighter",
                                    "size": "Small"
                                },
                                {
                                    "type": "ActionSet",
                                    "id": "alert-{{ $index }}-actions",
                                    "actions": [
                                        {
                                            "type": "Action.ShowCard",
                                            "title": "View Labels",
                                            "card": {
                                                "type": "AdaptiveCard",
                                                "body": [
                                                    {
                                                    "type": "TextBlock",
                                                    "wrap": true,
                                                    "text": "{{ $alert.Labels }}"
                                                    }
                                                ]
                                            }
                                        },
                                          {
                                            "type": "Action.ShowCard",
                                            "title": "View Annotations",
                                            "card": {
                                                "type": "AdaptiveCard",
                                                "body": [
                                                    {
                                                    "type": "TextBlock",
                                                    "wrap": true,
                                                    "text": "{{ $alert.Annotations }}"
                                                    }
                                                ]
                                            }
                                        }

                                    ]
                                },

                                {
                                    "type": "Container",
                                    "id": "alert-{{ $index }}-backup-labels-container",
                                    "padding": "None",
                                    "isVisible": false,
                                    "items": [
                                        {
                                            "type": "FactSet",
                                            "id": "alert-{{ $index }}-backup-labels-factset",
                                            "facts": []
                                        }

                                    ]
                                }
                            ]
                        }
                    ]
                },
                {{ end }}
                {{ range $index, $alert := .Alerts.Resolved }}
                {
                    "type": "Container",
                    "id": "{{ $index }}-alerts-container",
                    "isVisible": true,
                    "padding": "None",
                    "items": [

                        {
                            "type": "Container",
                            "id": "alert-{{ $index }}-msg-container",
                            "padding": "None",
                            "separator": true,
                            "items": [
                                {
                                    "type": "TextBlock",
                                    "id": "alert-{{ $index }}-summary",
                                    "text": "{{ $alert.Labels.alertname}}",
                                    "wrap": true,
                                    "size": "Medium",
                                    "weight": "Bolder"
                                },
                                {
                                    "type": "TextBlock",
                                    "id": "alert-{{ $index }}-description",
                                    "text": "{{ $alert.Annotations.description }}",
                                    "wrap": true,
                                    "weight": "Lighter",
                                    "size": "Small"
                                },
                                {
                                    "type": "ActionSet",
                                    "id": "alert-{{ $index }}-actions",
                                    "actions": [
                                        {
                                            "type": "Action.ShowCard",
                                            "title": "View Labels",
                                            "card": {
                                                "type": "AdaptiveCard",
                                                "body": [
                                                    {
                                                    "type": "TextBlock",
                                                    "wrap": true,
                                                    "text": "{{ $alert.Labels }}"
                                                    }
                                                ]
                                            }
                                        },
                                          {
                                            "type": "Action.ShowCard",
                                            "title": "View Annotations",
                                            "card": {
                                                "type": "AdaptiveCard",
                                                "body": [
                                                    {
                                                    "type": "TextBlock",
                                                    "wrap": true,
                                                    "text": "{{ $alert.Annotations }}"
                                                    }
                                                ]
                                            }
                                        }

                                    ]
                                },

                                {
                                    "type": "Container",
                                    "id": "alert-{{ $index }}-backup-labels-container",
                                    "padding": "None",
                                    "isVisible": false,
                                    "items": [
                                        {
                                            "type": "FactSet",
                                            "id": "alert-{{ $index }}-backup-labels-factset",
                                            "facts": []
                                        }

                                    ]
                                }
                            ]
                        }
                    ]
                },
                {{ end }}
                {
                    "type": "Container",
                    "id": "backup-alerts-container",
                    "isVisible": false,
                    "padding": "None",
                    "items": [
                        {
                            "type": "Container",
                            "id": "alert-catch-msg-container",
                            "padding": "None",
                            "separator": false,
                            "items": []
                        }
                    ]
                }
            ]
        }

    ]
}
{{ end }}

receivers:
  - name: sandbox
    msteams_configs:
      -  webhook_url: "YOUR_WEBHOOK_HERE"
         text: '{{ template "new.text" . }}'

Is there an appetite for this?

Thanks for making this MR @6fears7 ! Happy to assist on this.

@aw1cks, Thank you for the initial contribution / idea. I actually would love your assistance on this as I'm strapped for free time currently. If you can address the CI test failures / implement the test cases, that would be awesome. Until a maintainer says otherwise, perhaps it would be best to just write this as a hard cut to AdaptiveCards versus offering support for both.
The original template file for msteams seemed to be using internal markdown to submit the alert data and is the cause for the test failure since it's expecting JSON format.
Feel free to ping me as needed.

Thanks for opening a PR for this! I think support for Adaptive Cards would be great feature to have in Alertmanager.
However, I do think there are a couple of problems with this specific implementation:

Anyone who wants to customize their Microsoft Teams notifications will have to write a template with the contents of the JSON as you have done in default.tmpl. This is really complicated and very error prone. For example, it will be very easy to create invalid JSON from a Go template, especially when using loops and if statements.
All other integrations we support allow customization of fields without having to know the specific data format that is expected. In this case, the schema for Adaptive Cards. This is very different from how all other integrations work.

My suggestion would be to try and come up with an abstraction for Adaptive Cards in YAML. An example of this is the draft PR I opened for Slack Block Kit (see https://github.com/prometheus/alertmanager/pull/3381). I am interested to see what you can come up with for Microsoft Teams.

@grobinson-grafana i've tried to think about an abstraction in yaml for adaptative cards but that would then end put putting a rigid adaptive card structure in the receiver, so not sure it's also the best way to handle this correctly.
also because some alert sent to alertmanager content some nested json makes the task a little bit tricky

@grobinson-grafana i've tried to think about an abstraction in yaml for adaptative cards but that would then end put putting a rigid adaptive card structure in the receiver, so not sure it's also the best way to handle this correctly. also because some alert sent to alertmanager content some nested json makes the task a little bit tricky

Yes, it is hard! I hope we can solve it rather than push the problem onto users (i.e. templating JSON with Go templates in YAML 😢).

also because some alert sent to alertmanager content some nested json makes the task a little bit tricky

I don't understand what you mean here though?

also because some alert sent to alertmanager content some nested json makes the task a little bit tricky

I don't understand what you mean here though?
i just found out the code i'm using dropped the escape character in the json payload, now trying to deal with it :)

@6fears7 for as far as i sees it , your implementation is "broken" when the json payload as source contains messages like:
"text": "Pod voperator-controller-maqfzll (manager) is in waiting state (reason: "CrashLoopBackOff").",

i was looking for a way to fix this, but couldn't find (disclamer: i'm not a golang guru)
the escape caracters are dropped here: https://github.com/prometheus/alertmanager/pull/3799/files#diff-0e06d07cf4972aad8c889cb25bdb906e6b7901d2839a932ad4fccc7e60005490R94


Add Weakly Locally Compact + KC => Locally Relatively Compact

(I used T81, which is the smallest unused number.)
I noticed that the S119 now have both properties P23 and P24, and I'd like to delete either one.
The contents of the files are:
S119/P23: See item #2 for space #122 in DOI 10.1007/978-1-4612-6290-9_6.
S119/P24: Asserted in the General Reference Chart for space #122 in DOI 10.1007/978-1-4612-6290-9_6.
Since the book explicitely mentions the property P23 for the space, while P24 is only shown in the general table, I would like to remove P24. However, there are many spaces (S57, S91, S116, and S120) that have P24 kept, and P23 deducted manually. We could also remove P23 for the sake of unicity.
Any suggestions?
(By the way, I had asked the question on Math SE on whether Weakly Locally Compact + US => Locally Relatively Compact (https://math.stackexchange.com/q/4964467), but I received no answer, so I'll let it go, and any improvement can be done in the future.)

I have various comments about this.  But need to step away from my desk now.  Will reply later.

I have various comments about this. But need to step away from my desk now. Will reply later.

OK, thanks.

A lot of the theorems on the Weakly locally compact page (https://topology.pi-base.org/properties/P000023) have hypotheses of the form [WLC + some separation axiom].  So I have swapped the properties to make it easier to compare the theorems on that page.

I think the proposed T81 makes sense.  It cannot be derived from other theorems already in pi-base.
Let WLC = weakly locally compact, LC = locally compact, LRC = locally relatively compact.
The combination [WLC + Hausdorff] implies the more general condition [WLC + regular], which in turn implies both LC and LRC.  (Aside: That's why many of the theorems on the WLC page use WLC + regular as hypotheses.  Note that this is equivalent to WLC + R1 (preregular), but WLC + regular is more common and easier to work with.  That's why we chose that combination.)
Now, there are some examples of LRC + not LC + KC.  These spaces are necessarily not regular.  And one could deduce the LRC properties from asserting WLC directly in this case.  But those examples are also compact, which by itself implies LRC.
So, with the current spaces in pi-base, adding this new theorem T81 will not enable to derive any new traits for spaces.
Still, T81 is a good addition that could be useful for other spaces.

Which property to assert when WLC, LRC, LC are all valid and something needs to be asserted? If the space is also T2 or regular, I would say it's easiest to assert WLC, as it is easiest to check for a space and it implies the other two.

Which property to assert when WLC, LRC, LC are all valid and something needs to be asserted? If the space is also T2 or regular, I would say it's easiest to assert WLC, as it is easiest to check for a space and it implies the other two.

Thanks for your consideration and your comments!
I've kept WLC (P23) and removed LRC (P24) for S119. Is that OK?


main.js size is more than 28mb

i buillt an angular app with this template but i find out that everytime i import scss file the size of main.js is increasing. can anyone help me please

You may use the Angular version of the template.
https://github.com/BootstrapDash/StarAdmin-Free-Angular-Admin-Template


Syntax: Add a missing whitespace requirement to comments

According to the spec:
A line that begins with # is treated as a comment and ignored.
Whitespace followed by a # causes the # and the remainder of the line
to be treated as a comment.

Before this patch the following had a mistakenly highlighted comment (pip doesn't accept this):
numpy==2.1.3#not a comment

(There's no whitespace before the #).

You are right.
ERROR: Invalid requirement: 'XXX==0.0.1#not a comment' (from line 1 of requirements.txt)


CSP best practice

CSP deems inline CSS & JS unsafe - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src
Currently BookStack requires `Content-Security-Policy: style-src 'self' 'unsafe-inline';  script-src 'self' 'unsafe-inline';`` because of the inline CSS code in https://github.com/BookStackApp/BookStack/blob/master/resources/views/partials/custom-styles.blade.php and JS code https://github.com/BookStackApp/BookStack/blob/master/resources/views/settings/index.blade.php#L162
Another CSP issue is with the use of .globalEval in app.js.
Would a possible solution for custom-styles.blade.php be to move the css code to a file and update the file when the value is changed through the settings page?
I have not been able to trace .globalEval but I think it is coming from jQuery.

Are there any updates on this? I am running Bookstack behind my NGINX reverse proxy and have to following CSP's in place:
add_header Content-Security-Policy: "default-src 'none'; font-src https://fonts.gstatic.com 'self';img-src 'self'; object-src 'none' 'self'; script-src 'self'; style-src 'self';";
This works fine, however with this CSP in place, the cover images of Books and Shelves are no longer visible. This is especially curious, because the images within pages are visible as always, which doesn't make sense to me. When inspecting a book cover without the CSP in place, I can see, that the image source is as expected
<div class="featured-image-container" style="background-image: url('https://bookstack.domain.com/uploads/images/cover_book/2021-05/image.jpg')">
        </div>

So in theory the CSP I have should work, right? But for some reason and only for the covers, images don't show up.

I'm going to close this off since the CSP situation in BookStack has changed since this request. CSP is now built-in using nonce-based CSP rules.


Dataschema helper

Added toEntity() function which converts UserInfo object to a Datastore object, as well as a "setter" function addTripId() to add a new trip ID to the list.

No longer needed. Added directly to another PR.


Pull in changes from maverickwoo/vcprompt

Pull in changes from maverickwoo/vcprompt.
maverickwoo/vcprompt seems to have more updates than the original djl/vcprompt.

Merged in the changes from maverickwoo/vcprompt fork.
Now I can look to see if I can add Perforce support.


[DP-62] As a reader, I want a dedicated paragraph details pane

Changelog

segment.tsx: Added a “details button” to the right of paragraphs, similar to the details button to the right of a select-able word.

Syllabary View

Syllabary, Simple Phonetics & Syllabary, Phonetics, and Word Parts View

panel-layout.tsx: Created new type of FormFieldsFragment or TranslatedParagraph to support selecting paragraphs.

PanelLayout returns a different layout depending on whether a word or paragraph is selected.

paragraph-panel.tsx: Designed layout of paragraph panel display when a panel is selected.

document.page.tsx: Now supports selecting a word and a paragraph.
wordpress.tsx: Modified to support selecting a word and a paragraph.

Changelog
Modified some comments and the DocumentParagraph struct now contains an index field that represents a 1-indexed position of a paragraph within its document.

document.rs: Added index field and its resolver
database_sql.rs: Used enumerate() function to get the index of an object in an iterable, and assigned this as the index of a DocumentParagraph
queries.graphql: Added index field to DocumentContents query
panel-layout.tsx and paragraph-panel.tsx: Added index number to the panel header (see below)

edit-word-panel.tsx: Removed form.reset() since this causes form to clear if user "cancels" but enters "edit" mode again.

Do you think putting the selection icon centered to the right of the paragraph would be a good experience? Semantically where you put it makes sense since right now only the translations will be editable in the panel. But it does look perhaps a little awkward and easy to miss. Open to other ideas for placement.

I'll have to give this some more thought - but I do agree the selection icon is a bit easy to miss at the moment.


nunjunks api

I saw that you using {{ date(post.date) }}, but I didn't see any macro imported or nunjuns built-in filter in its docs, so my njks templates render can't parse that function, how can it word? thx

hi, teek. it's a hexo's helper function ,
I don't exactly know how it works, but I think this doc may be helpful.

finally got why njks can't prase those helper functions in my case -- I use them in macro. It seems that those function can from outside. might be a bug in hexo-renderer-njks or the limitation of macro.


massive cleanout of the transformers stuff

add meaningful generic types to stuff
remove things which weren't used/tested, and seem obsolete
(and which could not be propertly generified)

@sebersole WDYT?

Note, this is breaky. But: removal of Criteria was much more breaky in this area, and ResultTransformer was already marked deprecated, so we have the right.

Looked good to me.  Made some Javadoc changes and integrated upstream


Fix Nginx Ingress namespace

The correct namespace is ingress-nginx, not kube-system.

I signed it

I signed it

Hello @guoqiao
The PR #28154 and #28355 are also suggesting this change.
/hold

Hi @jihoon-seo  , thanks for letting me know, I will close PR then.


"Error: Not Found" while executing the action

Describe the bug
After configuring the action to be used in the simplest possible workflow I receive the following error:
Run<EMAIL_ADDRESS>  with:
    token: ***
    enterprise: <org-slug>
    allow_list_path: github-actions-allow-list.yml
Error: Not Found

To Reproduce
Steps to reproduce the behavior:

Setup a new private repo in an github organization
Restrict actions usage on org level (https://github.com/organizations//settings/actions) to "Allow selected action"
Add<EMAIL_ADDRESS>to the list of allowed actions
Add a new workflow like this

name: Deploy GitHub Actions allow list

on:
  push:
    branches: [main]
    paths: [github-actions-allow-list.yml]
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest

    permissions: read-all

    steps:
      - name: Checkout
        uses<EMAIL_ADDRESS>
      - name: Setup node
        uses<EMAIL_ADDRESS>        with:
          node-version: 14.x

      - name: Deploy GitHub Actions allow list
        uses<EMAIL_ADDRESS>        with:
          token: ${{ secrets.ENTERPRISE_ADMIN_TOKEN }}
          enterprise: <org-slug>
          # same as defined under `on.pull_requests.paths`
          allow_list_path: github-actions-allow-list.yml

create file "github-actions-allow-list.yml" in the root DIR of that repo with the following content
actions:
-<EMAIL_ADDRESS>Trigger the workflow

Expected behavior

As promised by the description of the action I would like to see that the org setting for the "Allow seleted action" do have the entry from the file
The workflow execution ends without an error

Additional context

@stoe  has access to my example repo
please contact me, if you need any further information or testing

As promised by the description of the action I would like to see that the org setting for the "Allow seleted action" do have the entry from the file

@marcusvoss, I think I understand the issue here.
You're trying to update the organisation allow list (e.g. https://github.com/organizations/org-slug/settings/actions), not the enterprise allow list.
This use case is currently not yet supported, but is a great feature request.


How to set num of workers and num of servers

Hi,
I am trying to run deep learning apps of petuum. When I read the train_minst.sh in app/caffe/mnist, I am confused about the setting for workers and servers. The script ssh to every node from machinefiles/localserver, and then starts caffe_main. My question is :
how the servers and workers are started? There is only one hostfile, both worker and server use the same hostfile? Are the server and worker run within the same process? If so, it means the num of server is the same as the num of workers. Can we separate the workers and servers, e.g., run 5 workers and 2 servers.
Thanks.
Wei

Hello Wei,
Currently, every machine acts as both a worker and server. The Parameter Server library automatically adds server functionality to each instance of caffe_main --- in this way, the server duties are distributed evenly across all clients. The server part of the code is not resource-intensive, and has little overhead.

Qirong,
Thanks. Let's take the model from mnist/lenet_train_test.prototxt as an example, it has about 8 parameter blobs.  You create one table for each blob (right?). Then if I use 4 nodes, the 8 tables will then be distributed into 4 nodes (2 tables per node?).  But, if I use more than 20 nodes, then some nodes would have no content in their tables. As a result, the nodes maintaining tables would be busy to response to other nodes, and load-balance among all nodes is a problem.
BTW, there is another issue.
F0124 15:32:50.150588 10067 bounded_dense_process_storage.cpp:54] Operation not supported!
*** Check failure stack trace: ***
@     0x2b7d0902669d  google::LogMessage::Fail()
@     0x2b7d0902a687  google::LogMessage::SendToLog()
@     0x2b7d09028f84  google::LogMessage::Flush()
@     0x2b7d090291b6  google::LogMessageFatal::~LogMessageFatal()
@           0x56b21a  petuum::BoundedDenseProcessStorage::Insert()
@           0x59245f  petuum::AbstractBgWorker::InsertNonexistentRow()
@           0x591ecd  petuum::AbstractBgWorker::HandleServerRowRequestReply()
@           0x593ee6  petuum::AbstractBgWorker::operator()()
@       0x3d36a0683d  (unknown)
I checked the code, in src/petuum_ps_common/storage/bounded_dense_process_storage.cpp,
the function insert() is not implemented which caused the error. But if I run with the default lenet_train_test.prototxt, there is no error. I used a simple multilayer perceptron model with 6 hidden layers and tanh（） function as the activation function. There are 12 parameter blobs, and 10 million parameters (i.e., floats) in total.  The configuration is similar to lenet_train_test.prototxt, excep replacing the layer settings. I didn't change other configurations. Two nodes are used.
Surprised to find that you are also in Singapore...:)
best,
Wei

Thanks for the bug report, we're looking into it now.
Regarding parameter server load balancing, please see the detailed instructions below:
In Petuum Caffe, every layer of the CNN is a separate table. The Petuum PS splits the tables across each process automatically, at the row level (i.e. each row is served by exactly one machine). There is a parameter called "num_rows_per_table" in the training scripts; for small datasets like cifar10 and mnist, we can set this to 1 without any performance degradation. But for larger datasets and networks, we advise using more rows for proper load balance between the server components.
The most general rule of thumb is this: if you have X Caffe processes, you can set num_rows_per_table to X (or some small integer multiple of X). This assumes that "num_comm_channels_per_client" is set to the default value of 1.
More precisely, Petuum PS uses a multithreaded server component (that resides within the main application process). The actual number of server threads is "#server threads = #processes * num_comm_channels_per_client". If you have X server threads, you can set num_rows_per_table to X to ensure proper load balancing of table rows.
How should one set num_comm_channels_per_client? Generally, for every 4-8 compute threads (per application process), you have 1 comm channel. So if you're using 16 compute threads per machine, you should have 2-4 comm channels.

We have just pushed a fix for the insert() error you reported. Could you re-download Petuum and try again?

Dear Qirong,
Thanks very much. I will try it today.
regards,
Wei
On Thu, Jan 29, 2015 at 10:28 AM, Qirong Ho<EMAIL_ADDRESS>wrote:

We have just pushed a fix for the insert() error you reported. Could you
re-download Petuum and try again?
—
Reply to this email directly or view it on GitHub
https://github.com/petuum/public/issues/18#issuecomment-71958414.

Dear Dr Qirong,
Would you please take a look at the new problem?
https://github.com/petuum/public/issues/18.
I pulled Petuum and tried the model I sent to you previously (can you run
it?). The problem now is that the program stops in function ReadPSTable
(src/caffe/blob.cpp) when it calls global_table_ptr_->template Get<petuum: DenseRow<Dtype> >. I tried one client and two clients. The same problem.
I can run lenet_solver.prototxt successfully...
Will the size of the model affect the running? But the model I configured
has only 10 million parameters. BTW, when I use two clients
(num_rows_per_table=2, num_app_thread=1), one client takes 10 times larger
memory consumption than the other one.
Thanks.
regards,
wang wei
On Thu, Jan 29, 2015 at 10:30 AM, Wang Wei<EMAIL_ADDRESS>wrote:

Dear Qirong,
Thanks very much. I will try it today.
regards,
Wei
On Thu, Jan 29, 2015 at 10:28 AM, Qirong Ho<EMAIL_ADDRESS>wrote:

We have just pushed a fix for the insert() error you reported. Could you
re-download Petuum and try again?
—
Reply to this email directly or view it on GitHub
https://github.com/petuum/public/issues/18#issuecomment-71958414.

Can you send us the model files again? Also, is your model the same as the cifar10 model, or is it something you designed yourself?

The files are attached.
I didn't change the caffe code.  The model is just a simple MLP. You can
run using this configuration directly (change the data path).
regards,
Wei
On Sat, Jan 31, 2015 at 3:48 PM, Qirong Ho<EMAIL_ADDRESS>wrote:

Can you send us the model files again? Also, is your model the same as the
cifar10 model, or is it something you designed yourself?
—
Reply to this email directly or view it on GitHub
https://github.com/petuum/public/issues/18#issuecomment-72308640.

I don't think github's issue page supports attachments. Can you post your issue to our Google Groups mailing list:
https://groups.google.com/forum/#!forum/petuum-user
Over there, you should be able to attach the file. Sorry for the inconvenience.


[IPAM] NetworkIsAvailable refuse nodes with children

Description
This PR fixes a bug in NetworkIsAvailable function. Now when a node has children returns false

/merge


connect-web requests fail in next.js middleware

Describe the bug
I try to use connect-web in the Next.js middleware, as Node APIs are not available, thus connect-node does not work.
I expect it to work, as it's just using the fetch api, and Next.js is running on V8, just as connect-web in the browser.
However, requests fail with:
- error Error [TypeError]: Cannot read properties of undefined (reading 'flags')
    at setRemoved (file:///app/node_modules/next/dist/compiled/edge-runtime/index.js:1:970334)
    at removeListenerAt (file:///app/node_modules/next/dist/compiled/edge-runtime/index.js:1:970334)
    at EventTarget.dispatchEvent (file:///app/node_modules/next/dist/compiled/edge-runtime/index.js:1:970334)
    at abortSignalAbort (file:///app/node_modules/next/dist/compiled/edge-runtime/index.js:1:970334)
    at AbortController.abort (file:///app/node_modules/next/dist/compiled/edge-runtime/index.js:1:970334)
    at done (webpack-internal:///(middleware)/./node_modules/@bufbuild/connect/dist/esm/protocol/run-call.js:103:24)
    at eval (webpack-internal:///(middleware)/./node_modules/@bufbuild/connect/dist/esm/protocol/run-call.js:33:9)
...

Also saw #550, which reports an issue w/ cloudflare workers & the AbortController, which also is a similar configuration.
To Reproduce

Clone reproduction repo: aplr/next_connect_middleware_issue
Install dependencies: npm install
Start server: npm run dev
Visit http://localhost:3000 in browser
Look at the logs in the terminal

Expected behavior
I expect the middleware to send the request using connect-web's connect transport, which uses the fetch api. Therefore I expect it to work also in Next.js middleware, which is based on V8.
Actual behavior
The following error is thrown:
- error Error [TypeError]: Cannot read properties of undefined (reading 'flags')
    at setRemoved (file:///app/node_modules/next/dist/compiled/edge-runtime/index.js:1:970334)
    at removeListenerAt (file:///app/node_modules/next/dist/compiled/edge-runtime/index.js:1:970334)
    at EventTarget.dispatchEvent (file:///app/node_modules/next/dist/compiled/edge-runtime/index.js:1:970334)
    at abortSignalAbort (file:///app/node_modules/next/dist/compiled/edge-runtime/index.js:1:970334)
    at AbortController.abort (file:///app/node_modules/next/dist/compiled/edge-runtime/index.js:1:970334)
    at done (webpack-internal:///(middleware)/./node_modules/@bufbuild/connect/dist/esm/protocol/run-call.js:103:24)
    at eval (webpack-internal:///(middleware)/./node_modules/@bufbuild/connect/dist/esm/protocol/run-call.js:33:9)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Object.unary (webpack-internal:///(middleware)/./node_modules/@bufbuild/connect-web/dist/esm/connect-transport.js:89:20)
    at async Object.eval [as say] (webpack-internal:///(middleware)/./node_modules/@bufbuild/connect/dist/esm/promise-client.js:132:26)
    at async Object.middleware [as handler] (webpack-internal:///(middleware)/./middleware.ts:18:26)
    at async adapter (webpack-internal:///(middleware)/./node_modules/next/dist/esm/server/web/adapter.js:170:20)
    at async runWithTaggedErrors (file:///app/node_modules/next/dist/server/web/sandbox/sandbox.js:98:24)
    at async DevServer.runMiddleware (file:///app/node_modules/next/dist/server/next-server.js:1013:24)
    at async DevServer.runMiddleware (file:///app/node_modules/next/dist/server/dev/next-dev-server.js:247:28)
    at async DevServer.handleCatchallMiddlewareRequest (file:///app/node_modules/next/dist/server/next-server.js:1096:22)
    at async DevServer.handleRequestImpl (file:///app/node_modules/next/dist/server/base-server.js:647:32) {
  digest: undefined
}

Environment

<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>

I am also experiencing the same issue. Extremely critical for us, hope this has a high priority.

Running Connect on edge platforms such as Vercels edge runtime and Cloudflare workers is an important feature, and we do plan to support them in the future. This is more involved that you might think though. While it's true that Node.js, many browsers, and Vercels Edge runtime use V8 under the hood, V8 is "just" a runtime for ECMAScript. It does not implement any parts of the fetch, streams, or encoding API.
All platforms bring their own implementation of those APIs, which may be incomplete, have bugs, or interpret ambiguous parts of the API spec differently. For example, fetch in Node.js is implemented by undici, and the Vercel Edge runtime is very likely using a different implementation.
When developing locally, you are not actually running code in the Vercel Edge runtime, but in a simulated environment, that may behave slightly differently because it may be running a different implementation of fetch. See the second section in Vercels documentation.
The error you are running into is raised in node_modules/next/dist/compiled/edge-runtime/index.js:1:970334, which seems to be the simulated environment, source code here: https://github.com/vercel/edge-runtime
At this moment, we cannot focus on edge runtime support, but this project being open source, you can help bringing it forward. Finding the location of the error in the source code, and investigating how it is triggered seem to be the logical first steps. It may be an issue we can resolve in connect-es, or it may be an issue that needs a resolution in the edge-runtime package.

This issue was fixed in vercel/edge-runtime by dropping node 14 support & removing the erroneous polyfill (See issue).
The updated<EMAIL_ADDRESS>will land in next.js with version 13.4.20 (See Changelog)
This means, that connect-web will be perfectly usable in vercel's edge functions, as long as you're setting the request's redirect property to follow like that:
import { Interceptor } from "@bufbuild/connect"
import { createConnectTransport } from "@bufbuild/connect-web"

const FollowRedirectsInterceptor: Interceptor = (next) => (req) => {
  req.init.redirect = "follow"
  return next(req)
}

const transport = createConnectTransport({
  baseUrl: "https://example.net/grpc",
  interceptors: [FollowRedirectsInterceptor],
})

Thanks @timostamm for pointing me into the right direction, I'll close this issue.


Frame graph

gfx_scene.h is of great help for loading assets.
Some kind of gfx_frame_graph.h would help a lot of managing resources and developing/reusing/sharing render techniques (a set of render passes).

Hey Sylvain,
Mmh not sure exactly what you mean with that frame graph thing? something along the lines of this presentation?
https://www.gdcvault.com/play/1024612/FrameGraph-Extensible-Rendering-Architecture-in

Hi !
I add this presentation in mind and also Unreal and Ubisoft take on the problem.
A frame graph can provide several features :

Resources are named globally (or not);
Allocating transient resources (textures, buffers...);
Reusing transient resources during the frame;
Aliasing resources if possible;
Placing barriers;
Async compute queue;
...

When using gfx in a growing project, it becomes quickly intractable to wire render techniques when adding options. If we provide a frame graph, render techniques will provide inputs and outputs with descriptions and the wiring (checking?) will be done while instantiating render techniques (no implicit wiring using global names or IDs).
Reusing transient resources (intermediate render targets, buffers...) is even harder.
These problems are solved implementing 1, 2, 3. Other points are probably overkill for gfx.

Closing due to inactivity.


Add k8s version in cluster-create job-logs

Issue For :
To avoid Hardcoding of k8s version in pipeline-detail page
Required Changes :

Print the Kubernetes version on cluster-create jobLogs  in the Pipeline .
Better to make a prefix text like KubernetesVersion : <k8sversion> .

Good to maintain same Structure for all Platforms (AWS,Konvoy,Rancher) .

@bhaskarhc the above changes have been done and is now present in Rancher pipeline.


TypeError: this.parent is null svg.js:2592:0

Hi, wout!
On first example I am receiving a following error message in console :(
if (SVG.supported) {
  var draw = SVG('drawing')
  var rect = draw.rect(100, 100)
} else {
  alert('SVG not supported')
}

You may have noticed that there is a magic param when you initialize SVG:
var draw = SVG(**'drawing'**)

This is the id of the element where the SVG is placed. It throws an error when there is no element with this id

Thank you, Fuzzyma!
I'm very inconsiderate after a working day and I am a new in js... )
Now I have a chance to play with my big svg and remake all animations from SMIL to the lib!
Good news. Yes!


BulkResult throws GSon errors

Sometimes, when running Jest, I have the following stacktrace:
java.lang.UnsupportedOperationException: JsonObject
    at com.google.gson.JsonElement.getAsString(JsonElement.java:191)
    at io.searchbox.core.BulkResult$BulkResultItem.<init>(BulkResult.java:98)
    at io.searchbox.core.BulkResult.getItems(BulkResult.java:36)
java.lang.UnsupportedOperationException: JsonObject
    at com.google.gson.JsonElement.getAsString(JsonElement.java:191)
    at io.searchbox.core.BulkResult$BulkResultItem.<init>(BulkResult.java:98)
    at io.searchbox.core.BulkResult.getItems(BulkResult.java:36)

It seems to be due to getAsString that needs to be changed to toString.
http://stackoverflow.com/questions/9324760/gson-jsonobject-unsupported-operation-exception-null-getasstring
I'm new to the library so I'm not sure how much this will impact everything, but happy to send a PR if you feel this is a minor change (one line)

When I look at the code of BulkResultItem, it seems the getAsString() method is called on _id, _type and _index. Somehow one of these is parsed as JsonObject. What query did you use?

What do you mean by sometimes, on what condition? If you can provide the code you use, I can help you further. Closing the issue, for now, feel free to reply here.


Enable tests for Linux/Mac

Similar to how we build and run tests, as part of the product build on Windows, we need to enable the same for Linux and Mac as well.

We build and compile tests for CPP and JIT modes as part of the repo build, so I am closing the issue.


STOR/RETR Will not start data transfer in explicit/implicit ftps

When utilizing AuthTls command handler, everything works fine for insecure calls but explicit/implicit it seems that it hangs up when trying to store or retrieve a file and throws an exception on AuthenticateAsServerAsync in ProtCommandHandler.  I have attached both the logs from NLog with FTP Server and FileZilla to connect locally.
Log_FileZilla.txt
NLog_FtpServer.txt

Nevermind - figured out the issue.

I'm curious, what was the problem?


Link rot on Uncommon tips & tricks

The preview GIFs on https://wiki.hyprland.org/Configuring/Uncommon-tips--tricks/ are expired Discord links. Those should probably not be hosted on Discord.
FYI, you can still access them by sending the expired link to yourself on Discord to retrieve a new access token. Here are working links (will expire soon too though):
https://cdn.discordapp.com/attachments/810799100940255260/1032843745864986644/ezgif.com-gif-maker18.gif?ex=66189d32&is=66062832&hm=d7d38b4967779b6a96c1f065d605453a0326719277b087cedac744a6564bf6fd&
https://media.discordapp.net/attachments/810799100940255260/1032846469855727656/ezgif.com-gif-maker19.gif?ex=66189fbb&is=66062abb&hm=0e702d919b8e8c4df19e5e70fea918b345989937cd3a460cc5db816e72141d51&

Should be fixed by https://github.com/hyprwm/hyprland-wiki/commit/036195c550c18c91d997f85fb917bbcc0ae28f03.


[REQUEST] Put MarkedUpField-attribute on class instead of field?

Hey, first of all, amazing lib @gasgiant !
I'm wondering if you could add "MarkedUpClass" (like MarkedUpField but for classes)? This is so that the same class be reused in multiple places without having to specify the MarkedUpField-attribute every time - as this would cause issues for co-developers not knowing that MarkedUpField has to be added (and exactly which parameters are needed). Something like this:
[MarkedUpClass]
public class TestClass
{
    public string message = "hello world";
}

I've implemented it and it works, but I think you could implement it a bit prettier than my first attempt. :P
You could also implement it quite easily if you just changed MarkedUpFieldAttribute to allow targeting classes/structs and after that change one line of code:
var markedUp = fieldInfo.GetCustomAttribute<MarkedUpFieldAttribute>();
would become:
 var markedUp = fieldInfo.FieldType.GetCustomAttribute<MarkedUpFieldAttribute>(true); //here we look class-level attributes
if(markedUp == null) //if that is null, we instead look at field-level attributes
   markedUp = fieldInfo.GetCustomAttribute<MarkedUpFieldAttribute>();

Hi! I think it's a good idea. Honestly, not sure why I didn't do it this way in the first place. I'll implement this next time I have bit of free time.

Added MarkedUpType in 0.5.0.


license changed: 2-clause BSD license

They changed their license.
see http://www.nasm.us/

Should be changed with "Simplified (2-clause) BSD license"?

According to https://opensource.org/licenses/BSD-2-Clause its "2-Clause BSD License" as the main name and its SPDX short identifier: "BSD-2-Clause"

Mhhh, but it's what it's filled in the "license" field of my recipe, right? https://github.com/lasote/conan-nasm-installer/blob/master/conanfile.py
Maybe you've looked to the LICENSE file of my repository, that is the license for the recipe, not for the library.

Ups Shit, I thought I double checked it.
Obviously not.
No, I got confused by the "License" part on https://bintray.com/conan-community/conan/nasm%3Aconan ..
Personally I think all recipe contributions to conan-center should either be covered by an uniform license or at least that license shouldn't require an acknowledgement in the end products documentation/readme/installer.
However this issue was solely opened by mistake so I'll close it :)

OK! now I understand, thanks for opening the issue. I've fixed the license on Bintray.


docs: fix broken link

fault_injection -> fault-injection
For an explanation of how to fill out the fields, please see the relevant section
in PULL_REQUESTS.md
Risk Level: Low
Testing: N\A
Docs Changes: fix link
Release Notes: N\A

Can you follow the instructions at the bottom of https://github.com/envoyproxy/envoy/blob/b278115e87de864267a88c689dccd01fb1b9b3df/CONTRIBUTING.md to retrigger CI?


Add phone number selection mode

Description:
This PR introduces two significant improvements to the contact picker plugin:

Phone Number Selection Mode

Added ability to select a specific phone number from a contact
New method selectPhoneNumber() that returns both contact info and the selected number
Contact model updated with selectedPhoneNumber field
Maintains backward compatibility with existing contact selection methods

iOS Implementation

Implemented using CNContactPickerViewController with phone number selection support
Returns all phone numbers associated with the contact plus the specifically selected number
Uses native iOS UI for phone number selection
Fully supports the new phone number selection mode

Android Implementation

Removed requirement for READ_CONTACTS permission
Uses native contact picker without accessing ContactsProvider directly
Simplified implementation that relies on the picker's built-in permission handling
Returns the selected phone number without requiring additional queries

Example Usage:
// Existing contact selection (unchanged)
final contact = await FlutterNativeContactPicker.selectContact();
print(contact.fullName);
print(contact.phoneNumbers);

// New phone number selection
final contact = await FlutterNativeContactPicker.selectPhoneNumber();
print(contact.fullName);
print(contact.selectedPhoneNumber); // The specific number chosen
print(contact.phoneNumbers); // All available numbers (iOS only)

Breaking Changes:

None. All existing functionality remains unchanged

Platform Differences:

iOS: Returns all phone numbers plus the selected number
Android: Returns only the selected phone number due to permission restrictions

Testing:

Tested on iOS 18 and Android 13
Verified both single contact and phone number selection modes
Confirmed working without Android permissions
Example app updated to demonstrate all features

This update improves user experience by allowing specific phone number selection while reducing permission requirements on Android.
https://github.com/user-attachments/assets/be27f996-2d53-451b-8eae-bdd317339844

PR for issue #22

Finally we found updated package support picking phone number, thanks @daniil-shumko aniil-shumko, will clone branch until merge

@daniil-shumko @hsul4n
Today i am planing to merge, and publish.


Reorganization of Connectors

THIS IS WORK IN PROGRESS. DO NOT MERGE.
This pull request adds the connectors as a fully exposed seperate module. The goals are:

Convert to V2 math
Add test suites for all functionality

Sadly, this still uses OrthoNormalBasis. I'm thinking that we should kill this soon as possible. There are only two uses now.

connectors
reTesselateCoplanarPolygons

I think reTesselateCoplanarPolygons is overly complicated, and should be simplified. Maybe a task for later.
That leaves connectors using just getProjectionMatrix and getInverseProjectionMatrix. We could replace OrthoNormalBasis with the small function called toXYPlaneTransforms(). Thoughts?

I added a new issue to follow up on removing OrthoNormalBasis in next pass. See Issue #184
@kaosat-dev please merge


Defaults to current page rather than selected layer

If you have selected a layer, it should default to selected layer

Fixed


Add a request for contributors to README

For the DIH project to be healthy and maintained going forward, it needs at least a couple more maintainers. Right now people are tweeting about DIH being removed from 9.0, so it is a good time to attract people's attention that the project needs contributors. What about a text on top of README @rohitbemax ?

@janhoy I definitely agree anybody willing to maintain and contribute to the project is always welcome, I will update the readme.
Also, if you are interested I can you give you commit access to the DIH repo

No need for that yet, as I don’t plan to contribute much code. Perhaps a PR or two..


Solution that actually works

This PR is a mixture of @szilvajuhos repository and my experiments. The current solution is set so it can run singularity and slurm together. For that, 2 new profiles were introduced:

uppmax-martin.config: personal profile for running the pipeline with slurm only
singularity.config: profile for running pipeline using singularity

I've also created Dockerfile (can be found also on DockerHub) which is a combination of bare install and conda. There was a suggestion to convert the fusioncatcher to conda. I can look into that, but something tells me this is a rabbit hole.
Lastly, I've included 2 test files that return fusion BCAS4-BCAS3.
Current problems:
In order for FusionInspector to work it requires special format of fusions genes (see here) which are generated by fusion_genes_compare.py that doesn't work really.
Comments are welcome, merge will be appriciated ⚡

I can't request viewers, in PR comment it is: @ewels, @szilvajuhos and @MaxUlysse

Ok nice! Note that the intention is to make this a nf-core pipeline so it would be good to bear that in mind from the start. Specifically:

We have a repo to host test data already (better than relying on UPPMAX)
Conda would be really best if possible, if it's a no-go then that's ok though
We talked about creating a new pipeline from scratch with the template and moving stuff over to that - probably easier to do that sooner rather than later.

See the nf-core developer docs and guidelines here: http://nf-co.re/developer_docs
Having said all this - really nice work :) We can certainly review and merge this PR in isolation first before doing the above stuff and moving the pipeline to nf-core and archiving this repo. Just wanted to flag this before you invest too much time into stuff that will need updating...
Phil

Looks very nice.

We have a repo to host test data already (better than relying on UPPMAX)

At the moment the new test data is in the PR, but will be included in the nf-core/test-datasets repo.

Conda would be really best if possible, if it's a no-go then that's ok though

Totally agree.

We talked about creating a new pipeline from scratch with the template and moving stuff over to that - probably easier to do that sooner rather than later.

I asked Martin to make Travis testing before moving stuff over, but we are keeping all that in mind.

Should we merge that for now then?

It's a bit odd to have a personal configuration file with hard coded paths in a repo that's ment to be publically avialable/used. That's my only caveat against this. But do what you want ¯_(ツ)_/¯

Agreed. This and many other things will be resolved in later work though - plan is to move this over to nf-core where we will be much stricter 😉


Can't find block ids in config file... or config file.

One of the ids in MilitaryBaseDecor is conflicting with another id, and all of the guides say to change ids in the config file, but I can't find the config file for this mod.

There should be a bbm folder inside the config folder, in it you should find a config file for militarybasedecor.

Block Ids have not been in use since after 1.6.4. So if you're having a conflict its not due to Block IDs. If you could get us the log so we could confirm the cause, that would help.

Found the config folder, but the military decor file is empty. And its definitely a id conflict, this is the short version of the crash report:The game crashed whilst initializing game
The game crashed whilst initializing game
Error: java.lang.IllegalArgumentException: Duplicate id: TileCamouflage

That is a name conflict and not a block ID conflict. It has to be resolved in the code and is most likely due to ICBM-Classic and MBD sharing the same tile name.

I don't think so, MBD calls it TileCamo I believe. Il check sometime later today.

Wait, could it be because I have both ICBM and ICBM classic installed?

You don't have any other mods adding camouflage other than mbd or icbm classic, right?

Can you please pastebin the crash report the full report please and link it here?

On Apr 13, 2017, at 11:24 AM, Ole Henrik Stabell<EMAIL_ADDRESS>wrote:
You don't have any other mods adding camouflage other than mbd or icbm classic, right?
―
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

He did post the full error log, but it doesn't show in the emails from Github, I went ahead and added it to a gist for you @dmodoomsirius https://gist.github.com/Hennamann/6a745accc3d468b6fc1e6fec716cf14b

Wooow, I suck at reading error logs. According to the error log sanguimancy seems to be the culprit. Try removing it and see if it helps. If it does then the Id conflict is between sanguimancy and ICBM-classic. Not military base decor.

It does. Sorry for mistake. I'll cloes this and re-post it on the sanguimancy and ICBM-Classic pages. Thx for the help.


MF-1361 - Add StringValue and DataValue comparison filters

What does this do?
This pull request adds le le lt ge gt comparators for StringValue and DataValue
Which issue(s) does this PR fix/relate to?
Resolves #1361
List any changes that modify/break current functionality
There are no breaking changes. Now StringValue and DataValue comparisons are possible in database readers.
Have you included tests for your changes?
Yes, test cases are added.
Did you document any new/modified functionality?
No.
Notes
N/A

@fthdrmzzz Please add these comparators for all the readers. Having them case-sensitive looks OK. Eventually, we can add a flag or indication if we want case sensitive or not, but this is good enough for the first iteration.

Codecov Report

Merging #1573 (4b69023) into master (f3ed852) will decrease coverage by 0.00%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master    #1573      +/-   ##
==========================================
- Coverage   68.93%   68.93%   -0.01%
==========================================
  Files         136      136
  Lines       11043    11047       +4
==========================================
+ Hits         7613     7615       +2
- Misses       2783     2785       +2
  Partials      647      647

Impacted Files
Coverage Δ

readers/cassandra/messages.go
82.40% <100.00%> (+0.33%)
:arrow_up:

readers/postgres/messages.go
85.57% <100.00%> (+0.28%)
:arrow_up:

things/service.go
65.35% <0.00%> (-0.72%)
:arrow_down:

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more

For String Comparison, in InfluxQL = comparator works but <=, <, >, >= comparators do not work. Does InfluxQL not support these comparisons for strings?
There is string comparison in Flux.

I wont be able to work on this pull request for a while. I am planning to continue after 2-3 weeks

@fthdrmzzz Please add these comparators for all the readers. Having them case-sensitive looks OK. Eventually, we can add a flag or indication if we want case sensitive or not, but this is good enough for the first iteration.

@fthdrmzzz Do you plan on continuing work on this PR and addressing this remark (implementation and tests for InfluxDB and TimescaleDB are missing)? If not, let us know so someone else can take over. This is a nice and useful feature and it would be a good contribution.

@fthdrmzzz Please add these comparators for all the readers. Having them case-sensitive looks OK. Eventually, we can add a flag or indication if we want case sensitive or not, but this is good enough for the first iteration.

@fthdrmzzz Do you plan on continuing work on this PR and addressing this remark (implementation and tests for InfluxDB and TimescaleDB are missing)? If not, let us know so someone else can take over. This is a nice and useful feature and it would be a good contribution.

This PR is waiting for PR MF-1584 to be merged. This pr cannot continue without the update on MF 1584

Merged via #1714


SPI conflicts

Hello,
My use case is an esp32 with dac8501 module and ad9833 module on spi bus HSPI, there seems to be some conflict, the 8501 works but the 9833 does not, if i run the example code for the 9833 that works, the 8501 driver seems to configure the spi bus so that the 9833 code does no longer work, if i look at the data/clock/sync signals of the 9833 on a scope i get no action, data and clock stay low, sync high, no changes. Both devices are write only, removing the dac module has no effect, disabling the dac.begin does, any clues?

Hi,
Yes, the example sketch for the ad9833 works fine, the final sketch for my project works fine with the dac but the spi to the ad9833 is completely dead, no signals at all.
this is the library
https://www.arduino.cc/reference/en/libraries/md_ad9833/
sketch is a bit long to post

mmmm,
can you try
#include <SPI.h>
#include <MD_AD9833.h>
#include <DAC8551.h>

DAC8501 DAC(16);
MD_AD9833 AD9833(17);

void setup(void)
{

  DAC.selectHSPI();
  DAC.begin();
  DAC.setValue(0);

  AD9833.begin();
  AD9833.setMode(MD_AD9833::MODE_SINE);
  AD9833.setFrequency(MD_AD9833::CHAN_0, 5000);
  AD9833.setActiveFrequency(MD_AD9833::CHAN_0);
}

void loop(void)
{
  for (int x = 0 ; x < 10000 ; x++ ) {
    AD9833.setFrequency(MD_AD9833::CHAN_0, x + 1000);
    AD9833.setActiveFrequency(MD_AD9833::CHAN_0);
  }
}

Tried that but the default bus is the other one so i do get signals on that bus.
I tried the following, forcing the data and clk lines as output but still the same, pulsing fsync(select) but low on clk and data
#include <MD_AD9833.h>
#include <SPI.h>
#include <DAC8551.h>
DAC8501 DAC(16);
// Pins for SPI comm with the AD9833 IC
#define AD9833_DATA  13  ///< SPI Data pin number
#define AD9833_CLK   14  ///< SPI Clock pin number
#define AD9833_FSYNC 17  ///< SPI Load pin number (FSYNC in AD9833 usage)
MD_AD9833 AD9833(AD9833_DATA, AD9833_CLK, AD9833_FSYNC); // Arbitrary SPI pins
#define UNKNOWN_PIN 0xFF
void setup(void)
{
Serial.begin(115200); /* prepare for possible serial debug */
DAC.selectHSPI();
DAC.begin();
//  DAC.setValue(0);
AD9833.begin();
AD9833.setMode(MD_AD9833::MODE_SINE);
AD9833.setFrequency(MD_AD9833::CHAN_0, 5000);
AD9833.setActiveFrequency(MD_AD9833::CHAN_0);
}
void loop(void)
{
for (int x = 0 ; x < 10000 ; x++ ) {
pinMode(AD9833_DATA, OUTPUT);
pinMode(AD9833_CLK, OUTPUT);
digitalWrite(AD9833_DATA, HIGH);
delay(5);

AD9833.setFrequency(MD_AD9833::CHAN_0, x + 1000);
AD9833.setActiveFrequency(MD_AD9833::CHAN_0);

}
}

i even tried to force the data and clk pins as output in the md9833 driver and force them high but on the scope they stay low
i usually can figure out issues with drivers but this one.....
if i rem out the 8501 begin line then it works fine
what could make the spi pins on the esp32 to be forced low no matter what?
digitalWrite(_fsyncPin, LOW);

for (uint8_t i = 0; i < 16; i++)
{
   pinMode(_dataPin, OUTPUT);
 pinMode(_clkPin, OUTPUT);

digitalWrite(_dataPin, HIGH);
digitalWrite(_clkPin, HIGH);
  digitalWrite(_dataPin, (data & 0x8000) ? HIGH : LOW);
  digitalWrite(_clkPin, LOW); //data is valid on falling edge
  digitalWrite(_clkPin, HIGH);
  data <<= 1; // one less bit to do
}
digitalWrite(_dataPin, LOW); //idle low
digitalWrite(_fsyncPin, HIGH);

}
}

I still do not trust the SPI_MODE _1 and SPI_MODE_2 .conflict.
We need to set the clock right before sending. (think ...)

something like this?
#include <MD_AD9833.h>
#include <SPI.h>
#include <DAC8551.h>

DAC8501 DAC(13, 14, 16);  // SW SPI
MD_AD9833 AD9833(17);   // HW SPI

#define UNKNOWN_PIN 0xFF

void setup(void)
{
  Serial.begin(115200); /* prepare for possible serial debug */

  DAC.selectHSPI();
  DAC.begin();
  //  DAC.setValue(0);

  AD9833.begin();
  AD9833.setMode(MD_AD9833::MODE_SINE);
  AD9833.setFrequency(MD_AD9833::CHAN_0, 5000);
  AD9833.setActiveFrequency(MD_AD9833::CHAN_0);
}

void loop(void)
{
  for (int x = 0 ; x < 10000 ; x++ ) {
    digitalWrite(14, HIGH);                         // set the clock line so it will have a falling edge for MODE_2
    AD9833.setFrequency(MD_AD9833::CHAN_0, x + 1000);
    AD9833.setActiveFrequency(MD_AD9833::CHAN_0);
  }
}

Hi Rob, i included those settings to be on the safe side but they are redundant. It seems to work fine, i had a I2C DAC in the project but that was too slow so changed to SPI. Project is a HF/LF generator, i basically needed a sweep generator to adjust MF circuits in old radios at 455khz and 10.7mhz, i already had a good HF generator but it lacks sweep, i have a LF generator that covers upto 20MHz with sweep but it has no markers so i made one myself and while at it i include a load of other functions as well, here are a few pics, the DAC takes care of the sawtooth signal for the sweep sync

Welcome, feel free to reopen issues if needed, or if you are in need of a (faster) library I like challenges :)


Improvements to BambooService

Various improvements in BambooService
Checklist

[ ] I tested all changes and all related features with different users (student, tutor, instructor, admin) on the test server https://artemistest.ase.in.tum.de.
[x] Server: I added multiple integration tests (Spring) related to the features (with a high test coverage)
[x] Server: I added @PreAuthorize and check the course groups for all new REST Calls (security)
[x] Server: I implemented the changes with a good performance and prevented too many database calls
[x] Server: I documented the Java code using JavaDoc style.

Motivation and Context
We would like to get rid of the used external library and implement the REST requests on our own.
This allows for more flexibility and means less dependencies on other libraries
Description

Re-implement a couple of REST calls between Artemis and Bamboo
Also change secret to token for Jenkins
No client changes

Steps for Testing

Create a programming exercise A
Participate in programming exercise A and check that everything works properly
Import programming exercise A into programming exercise B
Participate in programming exercise B and check that everything works properly
Delete the programming exercise A and B

Test Coverage
I improved the test coverage for BambooService (now > 80%) and for BitbucketService (now 52%)

@tiffca thanks for noticing this issue. Actually, the new token based authentication was using a wrong token in the yml settings. I fixed it, please try again


chore: Upgrade ORT to the latest version

Note that with this release the image has been renamed from ort-extended to just ort. While at it, stop using the latest tag to avoid that things break.

Conflicting change has been merged.


Template Not working

When trying to follow the guides for getting started with Slack apps, $ Slack run is producing the following output.

The start script was not found (sdk_hook_not_found)
Suggestion:
Hook scripts are defined in the Slack configuration file ('slack.json').
Every app requires a 'slack.json' file and you can find a working example at:
https://github.com/slack-samples/deno-starter-template/blob/main/slack.json

This is pretty much the same issue stated in this reddit post.
[https://www.reddit.com/r/Slack/comments/1ckydg1/script_not_found_sdk_hook_not_found_cant_make_my/]

Hey @doctorwheauxdat 👋 Thanks for sending in this issue and sharing some extra context for it! We've seen this a few times before and I don't think it's specific to the sample, but how the CLI is attempting to run the project 🤔
Could you share a bit more about your setup and machine? From the linked post I'm guessing this might be happening on Windows, and if so this might be due to the PowerShell version <6 being used. An upgrade might work in that case, but I'm also wondering which CLI version this is happening with or any other details you can share!


feat: add an idp for cstnet, that's used inside of branches of cas.cn

CSTCloud Passport is a widely used OAuth authentication tool within the Chinese Academy of Sciences and its affiliated systems. It uses a modified version of the OAuth protocol, with only two https requests required for a single authentication process.
And a fix is added to pass golangci-lint tests after. https://github.com/casdoor/casdoor/pull/3198

Not planned to add this as a standalone option. You can use the "Custom OAuth" option to connect.

Not planned to add this as a standalone option. You can use the "Custom OAuth" option to connect.
Hello, CSTCloud Passport does not offer an endpoint for UserInfoURL, all the info of users comes from extra parts of the token, which means that users can't use the "Custom OAuth" option to connect. In this situation, should I resubmit the pull request?

CSTCloud Passport has been in use for over a decade, serving more than 100,000 people and around 150 organizations.

@liu-kan the only way to support it is making the required feature (all the info of users comes from extra parts of the token) available as a general option in "Custom OAuth".


Add a display names toggle

Maybe separate for enemies/allies but this could be very useful.

yo this has been in the game for a while now plz close


newaccount error for DAWN3

code:
let testNewAccount = async () => {
  let adminPrivate = "5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3";
  config.keyProvider = [adminPrivate];
  let eos = Eos.Localnet(config);
  const pubkey = 'EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV';

  try {
    let res = await eos.newaccount({
      creator: 'inita',
      name: 'initzsh',
      owner: pubkey,
      active: pubkey,
      recovery: 'inita',
      deposit: '1.0000 EOS'
    });
    console.log("res", res);
    return res;
  } catch (err) {
    console.log("err", err);
    return err;
  }
};

result:
{
  "transaction_id": "3b99204c9c817b1312419f7eb2c2503a918610403acb9d07346c016e02a02f2b",
  "broadcast": false,
  "transaction": {
    "compression": "none",
    "data": {
      "expiration": "2018-03-24T06:51:24",
      "region": 0,
      "ref_block_num": 21814,
      "ref_block_prefix":<PHONE_NUMBER>,
      "packed_bandwidth_words": 23,
      "context_free_cpu_bandwidth": 0,
      "context_free_actions": [],
      "actions": [
        {
          "account": "eosio",
          "name": "newaccount",
          "authorization": [
            {
              "actor": "inita",
              "permission": "active"
            }
          ],
          "data": "000000000093dd74000000a0e19fdd740100000000010002c0ded2bc1f1305fb0faac5e6c03ee3a1924234985427b6167ca569d13df435cf01000100000000010002c0ded2bc1f1305fb0faac5e6c03ee3a1924234985427b6167ca569d13df435cf01000100000001000000000093dd7400000000a8ed3232010000"
        }
      ]
    },
    "signatures": [
      "EOSK4Sn3XmoTFDED3sgghhinwDVV6NtF42zP6LECDPCPufgctfJW9znWAnPh3tz4ibPS8r9e1fo68jcJmxuv73pQ6uoT8zkGr"
    ]
  }
}

query
eos git:(master) cleos get account initzsh
{
  "account_name": "initzsh",
  "permissions": []
}

@zshchou do you get an error if you attempt to create the account again?  This may be an issue with RPC.  I had a similar issue recently.
Also try setting recovery and creator as eosio.  If you're running master there is only a single producer eosio right now.

i use eosio, still error!
execure result
{
  "transaction_id": "e36668602da228c05eec0eb1190ea957182630e24501564b415fe521a80a6c8c",
  "broadcast": false,
  "transaction": {
    "compression": "none",
    "data": {
      "expiration": "2018-03-26T15:57:36",
      "region": 0,
      "ref_block_num": 743,
      "ref_block_prefix":<PHONE_NUMBER>,
      "packed_bandwidth_words": 23,
      "context_free_cpu_bandwidth": 0,
      "context_free_actions": [],
      "actions": [
        {
          "account": "eosio",
          "name": "newaccount",
          "authorization": [
            {
              "actor": "eosio",
              "permission": "active"
            }
          ],
          "data": "0000000000ea30550000c80819aea69701000000010002c0ded2bc1f1305fb0faac5e6c03ee3a1924234985427b6167ca569d13df435cf01000001000000010002c0ded2bc1f1305fb0faac5e6c03ee3a1924234985427b6167ca569d13df435cf0100000100000000010000000000ea305500000000a8ed32320100"
        }
      ]
    },
    "signatures": [
      "EOSKm3Szimh5f5v5EmYt2u5cJMPVhjyVRapCVUPyXVkEQXkH3KsGhppEZ2ABH7DsH4pQ3WL7TftbfaZXWAkymoTxYGhAssbg5"
    ]
  }
}

query result
➜  build git:(master) cleos get account mynewacct
{
  "account_name": "mynewacct",
  "permissions": []
}

I am running master there is only a single producer eosio right now.

Documentation here: https://github.com/EOSIO/eosjs/blob/c9b873966442b0752cd4d1f0cede3b5784baf3cd/README.md#configuration

it's ok, beacause yesterday if set broadcast:true, it not execute!

If broadcast is set to false it won't actually send the transaction, it just shows you what it would have sent.  Set broadcast to true and we can work thru the error from there.

so, thanks, can you solve the asset error? please visit my  issue for asset error.

I added a comment in the asset error ticket: #34
Sounds like this can be closed.


Fixed post tags issue #2

Fixed post tags issue by adding .val() to the end of this function: (In bold)
function save_article_tags() {
$('#article_keywords').val($('#article_form').find('input[name="hidden-article[keywords]"]').val());
}
which is located in the publify_admin.js

Same issue from your first PR – what is with all the Bootstrap file changes? 70+ file changes for a PR that was caused by a single line of buggy code is not good.

You should not have the commit for Issue #1 in this PR.

Reference issue # in BODY of PR.
Please look at requirements for PR body before submitting.

You don't need to write the code you changed in the body of the PR. That is what the "Files Changed" tab is for. I want a human-readable description of the issue you fixed so I as a fellow engineer can quickly see what it is I am supposed to be checking and review.


TS2345 error is incompatible with how NPM 3 implements side-by-side versioning

TypeScript Version:
2.0.3
Actual behavior:
This issue is a continuation of an earlier issue involving symlinks (#8346).
Suppose that library-a is an NPM package that exports a TypeScript class called MyClass, and two other packages consume this class.  If those packages find the MyClass.d.ts definition via two different file paths on disk, and if MyClass contains a private member, then the compiler reports an error because it does not trust that the implementations are interchangeable.
This makes sense in general, however there are everyday NPM usage scenarios where provably equivalent definitions must unavoidably have different file paths.  In this situation the TypeScript error is not reasonable and makes life difficult for developers.
Code
Unlike the earlier issue #8346, this repro does not involve symlinks at all.  In the attached CompilerBug.tar.gz, the different file paths arise as follows:

library-a 1.0 exports MyClass

library-d exports MyLibrary like this:
import { MyClass } from '@local/library-a';

export default class MyLibrary {
 public static getMyClass(): MyClass {
   return undefined;
 }
}

library-e exports YourLibrary like this:
import { MyClass } from '@local/library-a';

export default class YourLibrary {
 public static setMyClass(myClass: MyClass): void {
 }
}

application's package.json imports both libraries and also a library-b which indirectly depends on version 2.0 of library-a
 "dependencies": {
   "typescript": "^1.8.10",
   "@local/library-b": "1.0.0",
   "@local/library-d": "1.0.0",
   "@local/library-e": "1.0.0"
 }

As a result, the node_modules folder must unavoidably create two copies of<EMAIL_ADDRESS>(even after you run "npm dedupe" with npm version 3.0!):
C:\NpmInstallRepro\application>tree /a
+---lib
+---node_modules
|   +---.bin
|   +---@local
|   |   +---library-a
|   |   |   \---lib
|   |   +---library-b
|   |   |   \---lib
|   |   +---library-d
|   |   |   +---lib
|   |   |   \---node_modules
|   |   |       \---@local
|   |   |           \---library-a
|   |   |               \---lib
|   |   \---library-e
|   |       +---lib
|   |       \---node_modules
|   |           \---@local
|   |               \---library-a
|   |                   \---lib
|   \---typescript
|       +---bin
|       \---lib
\---src

application tries to do this:

   import { MyLibrary } from '@local/library-d';
   import { YourLibrary } from '@local/library-e';

   YourLibrary.setMyClass(MyLibrary.getMyClass());

The error looks like this:
src/index.ts(5,24): error TS2345: Argument of type 'MyClass' is not assignable to parameter of type 'MyClass'.
Types have separate declarations of a private property '_data'.

There are two physical files (containing equivalent definitions):
CompilerBug\application\node_modules<EMAIL_ADDRESS>CompilerBug\application\node_modules<EMAIL_ADDRESS>

Running the Repro
Extract the attached CompilerBug.tar.gz on a Windows PC and follow the steps in Instructions.txt.  Note that this repro requires you to install sinopia, which is a private NPM server where you can publish the test packages.  (Also note that the batch files are very simple and intended to be run multiple times, so the first time they will report some errors when they try to delete output folders that don't exist yet.)
Expected behavior:
I believe the compiler should determine that the MyLibrary.d.ts files are equivalent and treat them as the same class.  If we're going to use classes in our public API at all, it seems that this must be supported, otherwise developers will have to do awkward "as any" workarounds when they randomly happen to hit a certain edge case for "npm install."  In some cases (e.g. a class trying to extend a base class from a separate package) there is no reasonable workaround.
One idea would be for the compiler to examine the containing package.json for each file path, and check whether the version numbers are exactly the same.  If there is a concern about a package being locally modified, "npm install" injects other fields in package.json that the compiler could use to determine whether the package is pristine or not.
In the past, it was suggested that we might be able to solve this using tsc path mapping.  I'm not sure that this is the right approach.  In the above example, we are not trying to remap the "application" project; we actually need to remap its indirect dependency "node_modules/@local/library-e" to find MyClass.d.ts in the "node_modules/@local/library-d" directory. Configuring the application to let us micromanage the module resolution in this way feels wrong. Basically our build scripts would be completely circumventing the module resolution algorithm that the compiler is supposed to provide for us.
If you could provide a compiler option to completely suppress TS2345, that would be a reasonable (temporary) workaround for us.  This error is detecting a fairly obscure situation that is less likely to occur than the above scenario.
@vladima @dzearing @cliffkoh

CompilerBug.tar.gz

I believe it's the same as this issue I logged before: https://github.com/Microsoft/TypeScript/issues/7755.

Your issue #7755 seems to be asking to disable TS2345 entirely.  I think I agree with @RyanCavanaugh that this could be dangerous.  In fact, I would go a little further to say that I'm uncomfortable with structural equivalence even when there are no private members.  For example, just because BankBalance.add(number) and ArrayOfNumbers.add(number) have compatible type signatures, this does not imply that their contracts have similar semantics.  The purpose of interfaces is to define these semantics, whereas the purpose of classes is to implement them.  Personally I don't see any software engineering benefit of classes-as-interfaces (although maybe this TypeScript feature is forced by limitations of the underlying JavaScript language).
By contrast, my bug here involves the exact same source file from the exact same package version having two different paths on disk (due to the simpletonian approach of the NPM package manager).  I consider it a bug because TypeScript compiler is supposed to support NPM, but the type system currently does not work correctly in this situation.

@pgonzal I wasn't asking to disable it, but I was in the exact same situation. It was an identical definition from an identical type definition, just using Typings instead of NPM @types.

Maybe you'd be more interested in https://github.com/Microsoft/TypeScript/issues/6496. It's also the same issue style of issue.

This is a duplicate of #6496.
There are 2 files on disk, that are identical/compatible but they are not the same. at run-time given this structure, there are 2 node modules loaded. so the compiler behavior here is accurate.
The type system in TS is structural, meaning that things that "look" compatible
https://github.com/TypeStrong/ts-loader/issues/324 are considered compatible regardless where they came from.
private does not fit in that model; the expectation of a private property is that is accessed only by same exact class that created it. To enforce that, the compiler checks the identity of the declarations, and two declarations are not the same.
The compiler supports npm link as a feature, in this case npm link is not used.
#6496 tracks adding support for this scenario.

I get this exact issue where NPM ends up including multiple instances (one root, 1-N nested) and it complains it doesnt know which d.ts to use. To just get on and get stuff finished I had to move all dependencies to peerDependencies on the re-useable modules, and then duplicate those dependencies in each lib as devDependencies this at least enforces that there is only root level modules but it is horrible and requires me to basically include each dependency twice AND it means all consumers need to satisfy the child dependencies, so when I have moduleA -> moduleB -> moduleC -> appA the app is having to consume all the dependencies from the downstream.
Is there a better solution for this? I am not using npm link in any way here so its not exactly the same as the npm link issue that keeps getting mentioned.


Make pkgconfig relocatable

Make pkgconfig relocatable
Fixes #1654

bors try

bors -

bors try-

bors try

bors try

@oprinmarius Can you explain how this made the pkg-config files relocatable?

@andschwa this does not make pkg-config relocatable. I changed the SYSROOT dir for the samples , since we are using code which is not installed in the default location.
PKG_CONFIG_SYSROOT_DIR
Modify -I and -L to use the directories located in target sysroot. this option is usefull when crosscompiling package that use pkg-config to determine CFLAGS anf LDFLAGS. -I and -L are modified to point to the new system root. this means that a -I/usr/include/libfoo will become -I/var/target/usr/include/libfoo with a PKG_CONFIG_SYSROOT_DIR equal to /var/target (same rule apply to -L)
I added the PKG_CONFIG_SYSROOT_DIR variable to the samples ENV.
I didn't manage to make the pkg-config files change whenever we use a different DESTDIR for the make install target. DESTDIR variable is not present in the environment at the moment we build the pkg-config files, and they won't change unless we change the CMAKE_INSTALL_PREFIX
I will sync with @aserdean  today to see if he can suggest a better solution to make the pkgconfig files relocatable.

@andschwa I'm confused about what relocatable means in this use case. Do we need to reconfigure the *.pc files as per user input or make the *.pc files themselves relocatable depending on pcfiledir i.e.:
https://github.com/aserdean/openenclave/commit/5c45923701377b05d900972e66e67bf275e7609b

@aserdean Right now, the CMake build configures the pkg-config files at configure time, with hard-coded paths, dependency on CMAKE_INSTALL_PREFIX. This is fine is you only wish to install to that location after you've built, but we state we support using make DESTDIR=foo install, which happens at build time, and right now that would place pkg-config files in the right location, but with bad paths in them. So instead of hard-coding paths in the pkg-config files at configuration time, we need them to work if they've been moved around (probably this means relative paths or logic similar to the CMake package, if that's possible). @anakrish might remember more specifics here.

@andschwa thanks so much for the explanation.

So instead of hard-coding paths in the pkg-config files at configuration time, we need them to work if they've been moved around (probably this means relative paths or logic similar to the CMake package, if that's possible).

I think going through the route of pcfiledir would be better in this case then:
pcfiledir
The installed location of the .pc file. This can be used to query the location of the .pc file for a particular module, but it can also be used to make .pc files relocatable. For instance:
prefix=${pcfiledir}/../..
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

since setting prefix to relative path based on pcfiledir should achieve what we are looking for.
From the commit I would previously pointing, this would be the most relevant line (FWIW commit has been tested if you want to give it a spin).
Please let us know if you agree or if you want us to explore a different option.

@aserdean that sounds great to me! I will defer to you here, as I don't know much about pkg-config (other than our implementation was broken 😆 ) Thank you!

bors try


Fixed a loading svg bug of utterances.

I use the utteranc.es comment system and I found that there is a bug.
There is a loading svg before the comments are loaded and displayed. And the svg can't be covered completely by the comments, just like the pic follow.

I added a CSS that changed the top attribute from 60px to 62px in this request to fix this little bug 🙂

Thanks 🤝


[Alpha]: Context does not work when provided through a provider component using content projection

Qwik Version
0.0.25
Operating System (or Browser)
Edge
Node Version (if applicable)
No response
Which component is affected?
Qwik Runtime
Expected Behaviour
I would expect the following to work:
interface Colors {
  primary: string;
}

const ColorContext = createContext<Colors>("colorContext");

const ColorProvider = component$(({ colors: Colors }) => {
  const state = useStore(colors);

  useContextProvider(ColorContext, state);

  return <> <Slot /> </>;
});

const Text = component$(() => {
  const colors = useContext(ColorContext);

  return
Primary color: {colors.primary}
;
});

const App = component$(() => {
  const colors: Colors = { primary: "green" };

  return (
    <ColorProvider colors={colors}>
      <Text />
    </ColorProvider>
  );
});

This does not appear to work as <Text /> seems to think its parent is App because that's where it's defined and not ColorProvider even though that's its parent in the rendered tree.
This pattern is very common in React and I think it should be supported if possible.
Actual Behaviour
Currently one receives a context does not exist error if the above is used. To get this to work the provider cannot use content projection for its consumers:
For example like this (similar to code that's in the E2E folder):
interface Colors {
  primary: string;
}

const ColorContext = createContext<Colors>("colorContext");

const Text = component$(() => {
  const colors = useContext(ColorContext);

  return
Primary color: {colors.primary}
;
})

const App = component$(() => {
  const colors: Colors = { primary: "green" };

  const state = useStore(colors);

  useContextProvider(ColorContext, state);

  return (
      <Text />
  );
});

Additional Information
This feels unnatural and I spent quite a few hours going back and forth testing and comparing when I get this error and when context works as expected.

Since it's an alpha feature (and undocumented too - sorry for poking around it lol 😅) I assume this might be a bug. But maybe this is intended to preserve the scope of the projected content or some other semantics of Slots, in which case I would have to say again that it feels unnatural in the way we think of context (especially from the React realm) and could became a footgun in the future.

The issue makes a lot of sense! it should be fixed + added new tests on monday!
Thanks for opening this amazing detailed and explained issue :)

Thanks for the super fast fix @manucorporat! 🚀


google-cloud-app build failure

Host Environment

OS: MacOs 11.2.3 / Apple M1

To Reproduce
Steps to reproduce the behavior:
./vcpkg install google-cloud-cpp
Failure logs
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++  -I/Users/simonhausdorf/Projects/testCppTrader/vcpkg/buildtrees/abseil/src/ca9688e9f6-e4cda1d679.clean -fPIC -g -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk -march=armv8-a+crypto -std=gnu++11 -MD -MT absl/random/CMakeFiles/random_internal_randen_hwaes_impl.dir/internal/randen_hwaes.cc.o -MF absl/random/CMakeFiles/random_internal_randen_hwaes_impl.dir/internal/randen_hwaes.cc.o.d -o absl/random/CMakeFiles/random_internal_randen_hwaes_impl.dir/internal/randen_hwaes.cc.o -c /Users/simonhausdorf/Projects/testCppTrader/vcpkg/buildtrees/abseil/src/ca9688e9f6-e4cda1d679.clean/absl/random/internal/randen_hwaes.cc
error: unknown target CPU 'armv8-a+crypto'
note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, icelake-client, icelake-server, tigerlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, x86-64

It seems to fail in the abseil dependency. Interestingly I don't get this error on my Apple M1 Mac with macOS 11.2.3. Are you using the latest version of vcpkg?

I had the latest version of vcpkg, I run terminal with Rosetta which made it work. I will close this as it is resolved for me right now.


[BUG][v1.6.x-head] Share manager pod kept restarting

Describe the bug
test_rwx.py test case all failed in v1.6.x-head, the share manager pod kept restarting, this issue did not observe on v1.6.4-rc1

time="2024-12-30T02:03:40Z" level=error msg="NFS server exited with error" encrypted=false error="ganesha.nfsd failed with error: exit status 127, output: ganesha.nfsd: error while loading shared libraries: libjson-c.so.5: cannot open shared object file: No such file or directory\n" volume=pvc-c053d285-daff-42d3-a3ea-cbe46d3a8774
time="2024-12-30T02:03:40Z" level=debug msg="Device /dev/mapper/pvc-c053d285-daff-42d3-a3ea-cbe46d3a8774 is not an active LUKS device" func=crypto.DeviceEncryptionStatus file="crypto.go:89" error="failed to execute: /usr/bin/nsenter [nsenter --mount=/host/proc/28142/ns/mnt --ipc=/host/proc/28142/ns/ipc cryptsetup status pvc-c053d285-daff-42d3-a3ea-cbe46d3a8774], output , stderr nsenter: failed to execute cryptsetup: No such file or directory\n: exit status 127"

To Reproduce

Install v1.6.x-head
Dynamic provision a RWX volume.
The share manager pod kept restarting

Expected behavior
RWX volume worked well
Support bundle for troubleshooting
supportbundle_b9dc1b4d-934d-48f9-802c-61b4ee2f0029_2024-12-30T02-05-40Z.zip
Environment

Longhorn version: v1.6.x-head

Additional context
N/A
Workaround and Mitigation
N/A

time="2024-12-30T02:03:40Z" level=error msg="NFS server exited with error" encrypted=false error="ganesha.nfsd failed with error: exit status 127, output: ganesha.nfsd: error while loading shared libraries: libjson-c.so.5: cannot open shared object file: No such file or directory\n" volume=pvc-c053d285-daff-42d3-a3ea-cbe46d3a8774

a host package issue in the share manager pod? @c3y1huang please take a look.

Cause
Missing dependency and it's a regression introduced by https://github.com/longhorn/longhorn-share-manager/pull/417.

Verified pass on longhorn v1.6.x(https://github.com/longhorn/longhorn-share-manager/commit/b272523abe4071da705145177e21829556f9a649)
test_rwx.py passed on below scenario:

amd64
arm64
arm64 2 stage upgrade, (v1.5.5 to v1.6.3 to v1.6.x)


SEXX(1) in AVE description

To avoid an incorrect interpretation of SEXX(1) as SEXX(1'b1) (i.e. {(XLEN+1){1'b1}}) this probably should be replaced with ZEXX(1) so it will be clear that it is {{XLEN{1'b0}}, 1'b1}.

Thanks for the suggestion. We will modify the description in the next release.


Lottie doesn't work on iOS

Description
I can't see the animation with the version 0.56.0 of React Native, only a blank screen
Steps to Reproduce
render() {
  return (
    <View style={Style.container}>
        <LottieView
          source={require('./animation.json')}
          autoPlay={true}
          loop={true}
          style={{ backgroundColor: 'white', width: 200, height: 200 }}
        />
    </View>
  )
}

Expected behavior: Execute the animation and show something
Actual behavior: Empty screen

Versions
You can get this information from executing npm version.
{ MyApp: '1.0.0',
  npm: '5.6.0',
  ares: '1.10.1-DEV',
  cldr: '31.0.1',
  http_parser: '2.7.0',
  icu: '59.1',
  modules: '57',
  nghttp2: '1.25.0',
  node: '8.9.4',
  openssl: '1.0.2n',
  tz: '2017b',
  unicode: '9.0',
  uv: '1.15.0',
  v8: '6.1.534.50',
  zlib: '1.2.11' }

did you try with other animations? also, did you try to clean up your iOS project and build again?

@emilioicai Works after add the libraries manually from Xcode