text:
Expose CLI API to execute commands

To allow integrating CLI for Microsoft 365 in other tools we should export CLI's API for executing commands in the CLI's npm package. This will allow other tools that want to use CLI get a direct access to the API and not need to rely on executing CLI as a child process and interact with it through stdout, stderr and exit codes. When you install CLI for M365 as a dependency in your Node.js project, you should be able to do import { executeCommandWithOutput } from '@pnp/cli-microsoft365 and use the executeCommandWithOutput function to execute the specified command with its arguments and capture its output.
After we add this, we should also add a new page about integrating CLI in other tools in our documentation.

Sounds like a great addition!

Here's a first working proof of concept for how it could work:

sample code using CLI through its API https://github.com/waldekmastykarz/cli-api
CLI branch with the necessary changes: https://github.com/waldekmastykarz/cli-microsoft365/tree/cli-api

tl;dr: in the current setup, the necessary changes are minimal and we can run commands and get their output programmatically. There are some limitations though, such as not validating options. If that's a problem, then we'd need to do a bigger refactoring of the CLI so that it doesn't assume that it's being run in the command line.
I'd love to hear what you think @pnp/cli-for-microsoft-365-maintainers

Sweet! My take is that we do not need validation for options for a first version. I would assume (yes I know assumption is bad) that the tool that will take a dependency does some input sanitization themselves before passing it on. Getting this live would provide us with feedback if it is used and if there are requests for more refactoring we can always put it on the backlog 🚀

We need to double check what exactly we're skipping and if we're okay with releasing the first version with that. I'm all for fast iterations 😄

After a closer look, here are the things that the current implementation is missing:

update notification
showing help
running command using an alias
using short options
checking if the specified options are valid
checking if all required options are specified
validating options' values
loading options' value from file (value prefixed with @)
getting output value specified by the user

I think the most relevant is validating options' values since they might be passed on runtime. We could add it as it's just a single line. Other things are I think less relevant for programmatic use. What do you think?

Another limitation that I just realized we have is lack of support for interactive commands such as login. Currently, we wait for the command to execute and then return all of its output at once. If you run login with the default device code auth, the command returns some output and waits for your action but you won't see it because the command is still running. To support interactive commands we'd need to change how we handle output and work with events instead which is a bigger change.

Thinking of events some more, we could add events on top of the current logging infrastructure so you could get input as it comes as well as in the end all at once. This would make a difference for stderr where we log output during execution and for interactive commands like login. When handling events you'd need to ensure that you don't show the same output twice. Basically you'd choose to either use events or full output but not both.

Can we also discuss the should-be picture if we had infinite time to write the next iteration? My understanding would be that there is some place which is more like an "api" that is being called from the "cli", and what we're looking for is an export of that api, from underneath the CLI, right? Any multi-turn steps are collapsed (by the cli) into object arguments before calling the API, or at worst the API can return continuations or functions that accept more arguments and resolve to more functions or promises (to be avoided as much as possible though).

That's a great idea @zhenyasav. For the first iteration I've got the following rudimentary API:
export function executeCommand(commandName: string, options: any): Promise<CommandOutput> {
  // ...
}

export function on(eventName: string, listener: (...args: any[]) => void): void {
  // ...
}

As a consumer, you can choose if you want to get the output from the Promise (which is available after the command completed execution) or through events which are raised as the command executes. The way CLI is built today, in 99% cases you won't see any difference, but if you want to programmatically trigger for example login then you need events, because login (assuming the default invocation which triggers device code flow) is interactive and the Promise won't fulfil until the login process completed, while you need to get output earlier because it contains login instructions (device code). Here's how you'd use CLI with an event listener:
const { executeCommand, on } = require('@pnp/cli-microsoft365');

on('stdout', message => console.log(message));

executeCommand('login', { output: 'text' })
  .then(_ => executeCommand('status', { output: 'text' }))
  .then(_ => {})
  .catch(err => console.error(err));

Most of our commands are non-interactive and assuming the user provided all required parameters and they're valid, the command will execute and return the output without interruption. Right now, the only difference are remove commands which require user confirmation. The confirmation can be suppressed by passing the --confirm switch into the command, but ideally we should be able to raise it to user when CLI is used as an API and pass the user response back into CLI.
Currently, each command implements its own validation in code (example https://github.com/pnp/cli-microsoft365/blob/main/src/m365/aad/commands/app/app-get.ts#L104), which we could expose inside the executeCommand API. I wonder if we could simplify it with zod and if it would simplify our code base and what other benefits it would bring us.

yeah zod is probably going to help delete many lines and offer free types. "parse, don't validate!" :)

One more area that it could potentially help us could be defining and validation option sets #2998

For researching zod, I'd suggest taking the validation logic of aad app add, which has a nice combination or option sets, enums, dependent property and optional properties with specific format (JSON)

After looking at different options together with @manekinekko, we came to the following implementation:
const { executeCommand } = require('@pnp/cli-microsoft365');

executeCommand('status', { output: 'text' })
  .then(res => {
    if (res.stdout === 'Logged out') {
      return executeCommand('login', { output: 'text' }, {
        stdout: message => console.log(message)
      });
    }

    return Promise.resolve();
  })
  .then(_ => executeCommand('spo site list', { output: 'json' }))
  .then(res => {
    const sites = JSON.parse(res.stdout);

    if (sites.length === 0) {
      return Promise.reject('No sites found');
    }

    const siteUrl = sites[0].Url;
    return executeCommand('spo web get', { webUrl: siteUrl, output: 'json' });
  })
  .then(res => console.log(res.stdout))
  .catch(err => console.error(err));

We use current CLI's implementation with Promises to return command output after the command finished its execution. If you need to get command output while the command is still running, you can pass an optional listener attached to stdout (main output) or stderr (verbose, debug, and error output).
In an ideal world, we'd align more closely with Node's design of non-blocking IO and use streams eg. executeCommand().on('stdout', ...).on('stderr', ...).on('end', ...) but right now this would mean a significant rewrite of CLI's internals. We might consider this approach in the future. For now, we'll stick with promises.
You can find the latest sample and instructions to test in the repo I shared earlier in this issue.

authors: appieschot waldekmastykarz zhenyasav


text:
New command: search

Usage
m365 search
Description
Use the Microsoft Search to query anything
Options

Option
Description

-q --query [query]
Query to be executed in KQL format

-s, --scopes <scopes>
Set to specify the scope of the search request. Possible options to use: chatMessage, message, event, drive, driveItem, list, listItem, site, Bookmarks, Acronyms. Allows to pass multiple options separated by comma ','

--startIndex [startIndex]
Set the number that indicates the 0-based starting point to list search results on the page. The default value is 0.

--pageSize [pageSize]
Set the number that indicates the number of results to be returned for a page. The default is 25 results. The maximum is 1000 results.

--allResults
Set to get all search results from all pages

--resultsOnly
Set to get only the results form the query response

--enableTopResults
Use to get the first three messages in the response are sorted by relevance. Use this option only when scopes is set to message type

--select [select]
Comma-separated list of properties to return in the search results

--sortBy [sortBy]
Specify the properties to sort search results and the order in a comma separated list

--enableSpellingSuggestion
Set to get the suggested spelling correction information for typos in the user query

--enableSpellingModification
Set to get the search results for the corrected query when there are no results for the original query with typos, and get the corresponding correction information

Examples
Queries messages in the current user mailbox that contain the string "contoso" in any part of the message (the sender name, subject, message body, or any attachments). The query returns the first 100 results. The search results are ordered by createdDateTime descending and id descending and date ascending
m365 search --scopes 'message' --query 'contoso' --size 100 --sortBy 'createdDateTime:desc,id:desc,date'

Queries list items and sites that contain the string "accountt" and requests a spelling modification for the query.
m365 search --scopes 'listItem, site' --query 'accountt' --enableSpellingSuggestion --enableSpellingModification

possible result of the above command
{
    "value": [
        {
            "searchTerms": [
                "account"
            ],
            "hitsContainers": [
                {
                    "total": 1,
                    "moreResultsAvailable": false,
                    "hits": [
                        {
                            "hitId": "FlULeN/ui/1GjLx1rUfio5UAAEl",
                            "rank": 1,
                            "summary": "",
                            "resource": {
                                "@odata.type": "#microsoft.graph.listItem",
                                "createdDateTime": "2019-06-10T06:37:43Z",
                                "lastModifiedDateTime": "2019-06-10T06:37:43Z",
                                "name": "web_part_test_long Notebook",
                                "webUrl": "https://contoso.sharepoint.com/sites/contoso-team/Lists/Issue tracker list/DispForm.aspx?ID=1",
                                "sharepointIds": {
                                    "listId": "33498de0-d695-4d23-ac26-e1bf95a3206e",
                                    "listItemId": "13"
                                },
                                "createdBy": {
                                    "user": {
                                        "displayName": "System Account"
                                    }
                                },
                                "lastModifiedBy": {
                                    "user": {
                                        "displayName": "System Account"
                                    }
                                },
                                "parentReference": {
                                    "sharepointIds": {
                                        "listId": "da61a2b0-4120-4a3f-812b-0fc0d79bf16b"
                                    },
                                    "siteId": "m365x231305.sharepoint.com,5724d91f-650c-4810-83cc-61a8818917d6,c3ba25dc-2c9f-48cb-83be-74cdf68ea5a0"
                                }
                            }
                        }
                    ]
                }
            ],
            "queryAlterationResponse": {
                "@odata.type": "#microsoft.substrateSearch.alterationResponse",
                "originalQueryString": "accountt",
                "queryAlteration": {
                    "@odata.type": "#microsoft.substrateSearch.searchAlteration",
                    "alteredQueryString": "account",
                    "alteredHighlightedQueryString": "account",
                    "alteredQueryTokens": [
                        {
                            "offset": 0,
                            "length": 8,
                            "suggestion": "account"
                        }
                    ]
                },
                "queryAlterationType": "Modification"
            }
        }
    ]
}

Default properties
Additional Info
based on MS Graph Microsoft Search API to query data
https://graph.microsoft.com/v1.0/search/query
checking the MS Graph explorer gives a feeling how much may be achieved with this 🤩
Some other comments:

for the scope option - not sure of the name here 🤔 maybe entityType would be better and more aligned with the API response
in the remarks section I would mention that the queryString supports KQL
currently how I written it in the spec it is possible to specify only single property based on which we sort (order) the search results. The Graph API allows to specify a list of properties along with the isDescending property for each field 🤔https://learn.microsoft.com/en-us/graph/api/resources/search-api-overview?view=graph-rest-1.0#sort-search-results. I wonder what would be the best/easiest way to allow the same in this command. Any suggestions?
The API also allows to Refine results using aggregations. Still wondering how we could also allow it in an easy way (without passing an complex value 🤔). currently and idea I had was just to add a single 'advanced' option like aggregation and we would accept JSON like

{
    "field": "FileType",
    "size": 20,
    "bucketDefinition": {
        "sortBy": "count",
        "isDescending": "true",
        "minimumCount": 0
    }
}

@pnp/cli-for-microsoft-365-maintainers what do you think?

shouldn't scope be optional?
what if we'd solve sorting like: --sortBy "title:desc,id:desc,date". When you don't specify anything, we assume ascending order. If you want reversed, you add :desc to the property name. Would that work?
aggregations: perhaps something for v-next depending on the user interest?

One thing that we haven't discussed, is the format of simple output. Given how complex the returned data is, we need to make some opinionated choices to ensure that the output is readable in text, csv and md format.

One thing I'm also wondering is how does this fit in our command structure? Right now search is a command group.

One thing I'm also wondering is how does this fit in our command structure? Right now search is a command group.

won't it be the same like login or status or setup commands 🤔?

shouldn't scope be optional?

I am not sure but I believe you have to specify some entityTypes in the /search/query API otherwise you will get an error 🤔

what if we'd solve sorting like: --sortBy "title:desc,id:desc,date". When you don't specify anything, we assume ascending order. If you want reversed, you add :desc to the property name. Would that work?

great idea 👍

aggregations: perhaps something for v-next depending on the user interest?

I agree. This might be to much for start

One thing that we haven't discussed, is the format of simple output. Given how complex the returned data is, we need to make some opinionated choices to ensure that the output is readable in text, csv and md format.

a yes, and also the output is different based on scope.
For example the resource for sites is
"resource": {
                                "@odata.type": "#microsoft.graph.site",
                                "displayName": "Contoso Works",
                                "id": "tenanttocheck.sharepoint.com,7e5778c9-99e8-4c21-b05d-76f74ea127eb,01f537b0-a043-4ba8-a721-f1942012c275",
                                "createdDateTime": "2020-02-17T23:18:24Z",
                                "lastModifiedDateTime": "2020-02-17T23:22:23Z",
                                "name": "hr-works",
                                "webUrl": "https://tenanttocheck.sharepoint.com/sites/hr-works"
                            }

and for listitem is
"resource": {
                                "@odata.type": "#microsoft.graph.listItem",
                                "fields": {
                                    "id": "AAAAAO1dgHwsxw5IquJDkU-IsLsHAFJhD6ftkiJLgFUL8dNpcgAAAAAE5F4AAFJhD6ftkiJLgFUL8dNpcgAAAA9med0AAA2",
                                    "contentclass": "STS_ListItem_WebPageLibrary",
                                    "title": "Open Door Policy"
                                },
                                "id": "4941373d-0c59-45ed-81c3-efbf8d6a69bd"
                                }

One thing I'm also wondering is how does this fit in our command structure? Right now search is a command group.

won't it be the same like login or status or setup commands 🤔?

It's a bit different than those commands @Adam-it. Because there is a m365 search externalconnection command group.
Of course we're discussing renaming that, but it's there currently nonetheless.

I like the idea @Adam-it. A few comments:

as scope can contain multiple values, we should name it scopes
size is a vague term, should we not name it pageSize?
from is a vague term as well, in my book. Should we name that skipRows, startIndex or something else?

It's a bit different than those commands @Adam-it. Because there is a m365 search externalconnection command group.
Of course we're discussing renaming that, but it's there currently nonetheless.

aa right. totally missed that. Now I understand.
@martinlingstuyl, @milanholemans how about m365 graph search ?

@Adam-it, Nandeep is currently submitting a PR to rename the external connection commands. If that is merged it would be ok to use m365 search. I'd prefer that to m365 graph search.
We would have an alias called m365 search externalconnection, but hopefully that would not clash perse. We'd need to test it I guess.

I will work on review comments and submit PR today!

I like the idea @Adam-it. A few comments:

as scope can contain multiple values, we should name it scopes
size is a vague term, should we not name it pageSize?
from is a vague term as well, in my book. Should we name that skipRows, startIndex or something else?

thank you. applied those comments to the spec. I used startIndex

@Adam-it, Nandeep is currently submitting a PR to rename the external connection commands. If that is merged it would be ok to use m365 search. I'd prefer that to m365 graph search.
We would have an alias called m365 search externalconnection, but hopefully that would not clash perse. We'd need to test it I guess.

I renamed to graph search

@pnp/cli-for-microsoft-365-maintainers did I miss something? any other feedback or are we ready to go 🚀🙂?

Hi @Adam-it, I'd like for us to keep this on m365 search.
The graph namespace is for managing graph. Not for using it. And m365 search is free currently, aside from the search external Alias.
Did you check if that would be problematic?

Hi @Adam-it, I'd like for us to keep this on m365 search.
The graph namespace is for managing graph. Not for using it. And m365 search is free currently, aside from the search external Alias.
Did you check if that would be problematic?

Aaaj sorry I misunderstood your last comment. I also like the search option as it is plain and simple and this is what it basically is... We just search whatever we want.
I did check if this would bring any problems yet. I did expect any, I will do some research 👍

Two other comments:

the option queryString sounds like we should rename that to query. It's too long and very confusing for developers who work with http :)

I believe the setup for sorting (with a flag for descending results) is kind of limiting, as it's possible to sort on multiple fields, some asc and some desc... should we set that up in a different way? --sort 'Title:asc' --sort 'DateX:desc' For example... (which would cause an array after parsing.)

Two other comments:

Not 4 😅👇

the option queryString sounds like we should rename that to query. It's too long and very confusing for developers who work with http :) another option is queryText, which aligns with spo search...

Changed

I believe the setup for sorting (with a flag for descending results) is kind of limiting, as it's possible to sort on multiple fields, some asc and some desc... should we set that up in a different way? --sort 'Title:asc' --sort 'DateX:desc' For example... (which would cause an array after parsing.)

Good idea but I am just afraid of the number of options we may specify for this command. What do you think of @waldekmastykarz idea to go
"...sortBy "title:desc,id:desc,date". When you don't specify anything, we assume ascending order. If you want reversed, you add :desc to the property name."

Should we rename --fields to --select? To get this aligned with the other issue? We won't be using that setup here, and this is no odata parameter, but still. Its an open question, I'm not sure

We may to be consistent. Currently I think I named it that way to be consistent with the API under the hood but we all know this is not always the way to go. As w both don't have a strong opinion on that lets wait if anyone else would like to add a '+1' to some option

what happens with paging? Should we add an --allResults option to get all items instead of just one page?

I need to recheck this. The default is 25 items per page which we may extend to 1k. Not sure if the API allows a 'all' possibility. I think the 1k is the limit you may get in a single response.

Yeah, but I mean that allResults should trigger retrieving new pages... following the nextlinks so to say...

Yeah, but I mean that allResults should trigger retrieving new pages... following the nextlinks so to say...

I don't know. I feel like this limit is for a reason 🤔.
If you got 1k results and now you plan to go over them manually then good luck with that 😅. I say you need a better query to get less but more relevant results. That's what search for 🤷

BTW @martinlingstuyl from the comments seems like you went to sleep at 4am and woke up at 8am 😲.
O say a small nap is in order 😅.
Were you also catching up on MS ignite 😉?

Haha, no, my daughter couldn't sleep, and when she finally did, I could no longer catch it...

I don't know. I feel like this limit is for a reason

Are we understanding each other? I'm not talking about the limit per page, but how to get all results of a certain kind.
We often use automation to get a list of all libraries or docs in a certain scope. We get all results and do something with them. It would be bad if we had to implement paging ourselves if the CLI can just do that for you as well.

I don't know. I feel like this limit is for a reason

Are we understanding each other? I'm not talking about the limit per page, but how to get all results of a certain kind.
We often use automation to get a list of all libraries or docs in a certain scope. We get all results and do something with them. It would be bad if we had to implement paging ourselves if the CLI can just do that for you as well.

Got it. So implement in the command itself going over all the pages and retrieving more then 1k results.
I'll think about it

Got it. So implement in the command itself going over all the pages and retrieving more then 1k results.

Yes! Just like spo search

@martinlingstuyl what do you think of sorting by specifying it like this sortBy "title:desc,id:desc,date".
?

I think it's okay to do it like this as well. We had a discussion the other day on this topic: how to arrange options on these kind of situations consistently. I don't know for sure if we reached a conclusion though.

@waldekmastykarz,  can't find the place where we discussed this, do you remember what it was and if we reached a conclusion?

While we discussed the ability to use the same option multiple times and have minimist turn them into an array, the main argument against it was lack of autocomplete for a once used option so in the end we decided against it and decided to use custom comma-, space- separated values (separator varies per command).

@martinlingstuyl what do you think of sorting by specifying it like this sortBy "title:desc,id:desc,date".

--sortBy "title:desc,id:desc,date"
So this seems fine @Adam-it!
Shall we allow multiple separators? For example , as well as ; as well as  .

@martinlingstuyl what do you think of sorting by specifying it like this sortBy "title:desc,id:desc,date".

--sortBy "title:desc,id:desc,date"
So this seems fine @Adam-it!
Shall we allow multiple separators? For example , as well as ; as well as  .

I say mare options more confusion. I would go with ',' for starters

People may forget and try to use ;

People may forget and try to use ;

do we allow multiple separators in some other command?

When we're working with an option that allows multiple values we usually go the route of comma separated values. e.g. the options to, cc, and bcc for https://pnp.github.io/cli-microsoft365/cmd/outlook/mail/mail-send

interesting... specifically for email addresses it may be logical to separate using ;, as that is how it works in many email clients.
Anyway, this is no big issue for me, let's start by supporting only , we may always revisit this another time.

Good point @martinlingstuyl, it could be an interesting topic to keep in mind.

ok so:

@waldekmastykarz, @martinlingstuyl  I modified the spec to include the sortBy options as comma separated list with order type, added it also in one of the examples
@martinlingstuyl added --allResults option and modified the fileds to select

I think we are ready to go 🙂.
Thanks all for the awesome review 👍

One last thing:
Should we include a flag --hits, that makes the response output a flat array of hits?
I believe we have something similar on the spo search command.

One last thing:
Should we include a flag --hits, that makes the response output a flat array of hits?
I believe we have something similar on the spo search command.

sorry I am not sure what you refer to. We do not have and option like this in spo search 🤔
https://pnp.github.io/cli-microsoft365/cmd/spo/spo-search

It must be PnP.PowerShell then 😀
https://pnp.github.io/powershell/cmdlets/Submit-PnPSearchQuery.html#-relevantresults
We may also leave that out for now and discuss it separately.

It must be PnP.PowerShell then 😀
https://pnp.github.io/powershell/cmdlets/Submit-PnPSearchQuery.html#-relevantresults
We may also leave that out for now and discuss it separately.

also not hits option 😅. I am not sure if the graph search has such an option we may 'adapt' 🤔 what does it mean RelevantResults anyway? I am searching right? Of course, I am looking for something relevant to what I querry not something totally random 🙂.
@martinlingstuyl lets leave it for better times 👍. If you agree that is.

It's not something you can query, I just mean that using that flag we can adapt the response output to a more flat structure, instead of all these value and hitcontainer arrays.
That's what PnP PowerShell does as well: only output the relevantresults part of the json response if you use the option.
But it's okay to keep this for another time

Aaaaaa, now I get it 🤣. Actually that's a good idea 👍. I will include an option like this as well 🙂

I wonder though if there are situations, where you'd want the original response from the API

Good question, I'm not sure what the hit containers (and the value array) mean. Could there be multiple result lists,that could be used in multiple places or something? Who knows...
My gut tells me to just return the api response and use a separate flag to merge the hits to a single array.

I would not mind the simplicity. I'm just not sure what information would be in other hitcontainers or value arrays. What if those can be duplicate lines for example?

Good question. I don't know if that's even possible. We need @wobba 😁

Duplicates = the same results in multiple hits arrays. Would that be realistic or unlikely to happen realistically?

Kind of unlikely, but could happen. If we want to flatten the output I would return items from the first hits container (which would always be unique). If there are scenarios with multiple hits arrays, then having duplicates should be ok from a schema point of view and we should only return a complex type with the two arrays imo. That said, if you collaps all hits into one list - having duplicates should not be an issue for any output, as there are no unique constraints in output lines/objects... depending on how you build them(?).

Thanks for pitching in @wobba, if I read you correctly there currently is just one hits array, but as graph search develops, there might be more with their specific use cases.
So merging all arrays so we can return a single array seems to be OK for now.
In terms of usability, shall we merge them by default and include a --rawResponse flag to help people if they really want the default graph output, @waldekmastykarz, @Adam-it?

From my testing I only seen one itemnkn the array, but as it is an array I expect e.g. answers and results both to return on one request at some point.
Either merge by default and provide and option to get raw, or raw by default with and option to prettify/collapse. I lean towards simplify the response by default.

@martinlingstuyl, @waldekmastykarz, @wobba thank you for an awesome discussion and a great brainstorm on that 👍.
Some comments from my side:

@martinlingstuyl if we by default show only hits and add a --rawResponse to get the raw API output doesn't it break a bit our general rule that when we have commands that are kinda wrappers around specific API requests we usually (at least for JSON output mode) return the exact same output as the API gives. Isn't it the way we do/done it already in many other commands? If we change the approach for this command with an additional option to get the raw response won't it be misleading for the end user?
hmmm... I had something else in mind but I lost it 😅.. so for now I have only one comment 😉

Hi @Adam-it, In general we work that work, correct.
But we shouldn't forget that we're focused on helping users to achieve their scenarios in the most simple way possible. The raw output of the search API is not directly helpful there. Being User friendly is important to us, while aligning with the API's is (I think) a less important goal.
Also: we don't align with the API's because users expect it, they often would have no clue about those API's and how they work.
The reason we align with API's is among other things because we don't want to make assumptions in general of what people will use from the API output. So we pass it all through. In this case, considering the shape of the output, I think the user friendly argument should weigh heavier in the choice made.
But that's just an opinion of course... let me hear yours as well.

Hi @Adam-it, In general we work that work, correct.
But we shouldn't forget that we're focused on helping users to achieve their scenarios in the most simple way possible. The raw output of the search API is not directly helpful there. Being User friendly is important to us, while aligning with the API's is (I think) a less important goal.
Also: we don't align with the API's because users expect it, they often would have no clue about those API's and how they work.
The reason we align with API's is among other things because we don't want to make assumptions in general of what people will use from the API output. So we pass it all through. In this case, considering the shape of the output, I think the user friendly argument should weigh heavier in the choice made.
But that's just an opinion of course... let me hear yours as well.

Yes I do agree that in the very end the user is important 👍.
Not so long ago I just learned that user > maintainer > author 😅.
I don't have any strong opinion on that and we may stick to what you suggest, sure thing 👍🙂. @waldekmastykarz do you have the same opinion? If so let's just follow what you suggest 👍
All I am trying to say it's hard to predict and assume that the hits are the only thing the user needs. Isn't the term important? Isn't the total per hit container important 🤷? Isn't the info what was corrected in the search term relevant too?
In my opinion yes, other may say no.
I am just trying to keep a balance here between what is easy for us to maintain and keeps same approach, with what is best and least problematic for the user.
BTW for the text and csv and MD output modes we would need to transform the output to return the results anyway right? As this is all just a huge complex.
So isn't it like this that if someone wants to see and have the search result in a nice looking and easy to read way, then he or she would use text or md mode for that anyway 🤔. JSON is not that easy to read anyway right? So JSON may be used to return all the data we have, and now when I write it I think this is already the same approach we keep in other commands (JSON = all response and txt,csv,md = the nice to read most important, data driven part of the response) 🙂

You bring up an interesting point @Adam-it, where we would consider JSON output as raw because most likely it'll be used in scripting where you'd want to have access to all information.
Let's proceed as follows:

JSON returns information as-is from the API
all other outputs splats hits from the different arrays into a single array

That way, we combine the flexibility with usability without introducing special switches like --raw

@waldekmastykarz I think this is an approach we already keep in other commands so it's not something new actually 😅.
I don't remember the exact commands at the moment. Maybe @milanholemans you recall a command like this?

Ok! In that case let's continue in this way!

A comment on the total results number coming back. This is at best a rough estimate and can never be trusted these days unfortunately. You can only trust the value which says there are more results, and then page.

Maybe person/people type is missing for the scopes option. Both person and people works, but the documentation itself it's quite confusing, especially how filtering is done.
https://learn.microsoft.com/en-us/graph/search-concept-person

Can I take it? Not sure whether the spec is up-to-date. I haven't read all comments.

Can I take it? Not sure whether the spec is up-to-date. I haven't read all comments.

Yep, spec is ready to go. All yours 🤙👏

@Adam-it Only to confirm, the command name will be m365 search? For now, the commands are grouped, I would expect something like m365 search list

@Adam-it Only to confirm, the command name will be m365 search? For now, the commands are grouped, I would expect something like m365 search list

Yep, that's the idea. Search is a very basic thing and may be a starting point of everything.
Also I don't expect to have search add or search get etc

Maybe person/people type is missing for the scopes option. Both person and people works, but the documentation itself it's quite confusing, especially how filtering is done.
https://learn.microsoft.com/en-us/graph/search-concept-person

@Adam-it person/people type is missing for the scopes option

Maybe person/people type is missing for the scopes option. Both person and people works.
https://learn.microsoft.com/en-us/graph/search-concept-person

@Adam-it person/people type is missing for the scopes option

Thanks @MartinM85 for pointing it out and sorry for the lack of response from my side I think I overlooked your comment and also this in the docs as well.
Lets definitely add this to the scope. IMO I would add person name of this scope but I don't have any strong preference here 👍

@Adam-it I would suggest to rename query option to queryString, because query is global option 🙂

@Adam-it I would suggest to rename query option to queryString, because query is global option 🙂

Good point. Lets do that 👍

@MartinM85 I just noticed that in the spo search we use queryText. Do you think we could align and use the same naming instead of queryString?
I will update the docs

@Adam-it Sure, PR updated

source: gharchive/issue

authors: Adam-it Jwaegebaert MartinM85 martinlingstuyl milanholemans nanddeepn waldekmastykarz wobba

license: MIT

license_type: permissive

license_source: github-api


text:
Sample search flows for connection. Closes #2444

Sample search flows for connection. Closes #2444

Awesome! Let's get it reviewed asap 👏

Merged manually. Thank you! 👏

source: gharchive/pull-request

authors: appieschot waldekmastykarz


text:
Improve Auth flow local vs Azure

Proposing a small code update to run token validation only when the code is ran locally, when hosted in Azure we use EasyAuth.
When doing the lab we ran into issue because we had the double Token check, EasyAuth was accepting the token but we still got a 401 because some of the env Variables were not set correctly.
This took us 4hrs to troubleshoot. Proposing this new code so there is only one Authentication validation :
Local you check your code
Azure you check easy Auth.
FYI : @BobGerman @waldekmastykarz

How does one debug a 401 when Copilot is calling Easy Auth directly and there is no way to look at the token? I agree the double auth should go and was an oversight on my part, but I suggest removing Easy Auth not the coded validation ...

actually Easyauth has a very good troubleshooting wizard on azure where you can see what is wrong without seeing the token.
on top of that the token validation is not that easy in the code.
Envoyé à partir de Outlook pour Androidhttps://aka.ms/AAb9ysg

From: Bob German @.>
Sent: Friday, November 1, 2024 3:53:24 PM
To: pnp/copilot-pro-dev-samples @.>
Cc: Eric Scherlinger @.>; Author @.>
Subject: Re: [pnp/copilot-pro-dev-samples] Improve Auth flow local vs Azure (PR #14)
How does one debug a 401 when Copilot is calling Easy Auth directly and there is no way to look at the token? I agree the double auth should go and was an oversight on my part, but I suggest removing Easy Auth not the coded validation ...
—
Reply to this email directly, view it on GitHubhttps://github.com/pnp/copilot-pro-dev-samples/pull/14#issuecomment-2452008589, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AIP3UEFV6USVOSYFP6W7DK3Z6OIWJAVCNFSM6AAAAABQ75JJHOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINJSGAYDQNJYHE.
You are receiving this because you authored the thread.Message ID: @.***>

While I understand the point, I think it's a dangerous pattern to introduce. The proposed approach means including a branch of code that's used only during local development and doesn't match how the API will run in production. Say that there's a bug in the local validation logic: is there a chance that developers might waste time fixing it while the production version would work just fine?
If we want to show implementing custom validation logic, I suggest we use a different sample that doesn't use Easy Auth in production and uses custom validation both locally and in prod. That way, we have a realistic setup that's relevant to developers and teaches them a pattern they're likely to use in real life.

Yes that would be the best approach functionally speaking but security wise I guess it is better to use service auth vs custom code 😁.
I tried myself and actually it is not that simple to implement
Envoyé à partir de Outlook pour Androidhttps://aka.ms/AAb9ysg

From: Waldek Mastykarz @.>
Sent: Monday, November 4, 2024 8:53:06 AM
To: pnp/copilot-pro-dev-samples @.>
Cc: Eric Scherlinger @.>; Author @.>
Subject: Re: [pnp/copilot-pro-dev-samples] Improve Auth flow local vs Azure (PR #14)
While I understand the point, I think it's a dangerous pattern to introduce. The proposed approach means including a branch of code that's used only during local development and doesn't match how the API will run in production. Say that there's a bug in the local validation logic: is there a chance that developers might waste time fixing it while the production version would work just fine?
If we want to show implementing custom validation logic, I suggest we use a different sample that doesn't use Easy Auth in production and uses custom validation both locally and in prod. That way, we have a realistic setup that's relevant to developers and teaches them a pattern they're likely to use in real life.
—
Reply to this email directly, view it on GitHubhttps://github.com/pnp/copilot-pro-dev-samples/pull/14#issuecomment-2454025040, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AIP3UEGIYTIPM4ABB7DZWNDZ64RWFAVCNFSM6AAAAABQ75JJHOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINJUGAZDKMBUGA.
You are receiving this because you authored the thread.Message ID: @.***>

100% that service auth is preferred because it minimizes the chance of developer error. Like you noticed, it's not trivial and requires a solid understanding of security.
That said, I suspect that some organizations might have to/prefer to use a custom solution and we should meet them where they are too 🙂

I'm trying to decide based on: is this code you'd put in production. In my eyes, you'd either use Easy Auth or not, but not both, and you'd align the code based on your architectural decision. I suggest we keep the sample simple and focused on the scenario: if it's meant to illustrate using Easy Auth, let's do that. If we want to show custom validation logic, let's show that, in as close to real setup as possible.

authors: BobGerman ericsche waldekmastykarz

repo: pnp/copilot-pro-dev-samples


text:
Updated  Restore-PnPRecycleBinItem documentation

Type

[X] Bug Fix
[ ] New Feature
[ ] Sample

Related Issues?
Mentioned in https://github.com/pnp/powershell/issues/273#issuecomment-778841403
What is in this Pull Request ?
Updated the documentation for Restore-PnPRecycleBinItem to remove -All parameter which is no longer there.
Although I'm not sure on what the behaviour should be for Restore-PnPRecycleBinItem on it's own? Should it restore all items without the need for a piped input or -Identity parameter? Would you use -RowLimit to limit the amount of items returned and restored? I note -Identity is a required field which means it doesn't allow this behaviour.

Thank you @LeonArmston !

authors: LeonArmston erwinvanhunen

repo: pnp/powershell


text:
Graph script to get licenses by SKU and send alert email if low license count

This PowerShell script monitors the license counts for specific Microsoft 365 SKUs and sends an email alert if any SKU has less than 5 licenses remaining.

Thank you @EilafBarmare looks like an awesome sample, appreciate you submitting 😁 should be live shortly.

Thanks @pkbullock

authors: EilafBarmare pkbullock

repo: pnp/script-samples


text:
Update contribution guidelines and templates

Q
A

Bug fix?
no

New feature?
no

New sample?
no

Related issues?
n/a

What's in this Pull Request?
The main README.md file and contribution guidelines for this repo haven't been updated for a long time. In the meantime, Teams development tools have evolved quite a bit, notably with the addition of Teams Toolkit and updates to yo teams.
This PR updates the main README.md and the contribution guidelines, and adds 3 new README templates for use in samples

Teams Toolkit with Visual Studio Code
Teams Toolkit with Visual Studio
yo teams

Hi @hugoabernier , @mmsharepoint , @rabwill , and @VesaJuvonen
I have just updated the contribution guidelines and main README for the teams-dev-samples repo to reflect recent changes such as the use of Teams Toolkit. I also added 3 new README templates: Teams Toolkit for VS Code, Teams Toolkit for VS, and yo teams (which didn't previously have its own template).
I'd appreciate if you can review these before I publish them based on your experience working with these or similar samples, and the community! @mmsharepoint I invited you to join as a maintainer of this repo and would like to add you as a reviewer if you accept the invitation.
Thanks very much!

Thanks very much for the feedback Markus!
I gave you maintainer at least so you could review this PR.
I'd welcome your help with the samples but only if you have the time for that...
Thanks!

repo: pnp/teams-dev-samples


text:
Add mention of known issue: "Now Playing" widget interprets Microsoft Teams call notifications as media (MS's fault)

As per title, the Now Playing widget interprets Microsoft Teams call notifications as songs. After the call is ended, the widget is stuck on the touchbar until the Microsoft Teams app is killed. By pressing on the widget, the call sound is reproduced, despite no call is incoming.

This is an issue with Microsoft Teams. Mac OS also interprets it as a song, go to the control centre and you'll see it showing as media. If Mac OS sees something as media so will pock.

Thank you @cshariq for your clarification. What do you think about mentioning this problem somewhere in the documentation/README?

authors: cshariq gpicc

repo: pock/pock


text:
pick up console logs

I'm running the package in a heroku dyno and I'm trying to find a way to get logs from the template picked up by phantom and shown in my heroku console,
I tried adding this to the serverScript.js
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};
but that didn't work..
I haven't worked with phantom at all before.

@stellanhaglund what strategy are you using? phantom-server or dedicated-process?

phantom-server
2015-12-10 20:32 GMT+01:00 BJR Matos notifications@github.com:

@stellanhaglund https://github.com/stellanhaglund what strategy are you
using? phantom-server or dedicated-process?
—
Reply to this email directly or view it on GitHub
https://github.com/pofider/phantom-html-to-pdf/issues/18#issuecomment-163727057
.

ok, let me try it on my PC when i comeback home

it works for me..

i'm closing this because i don't think it is something that we can support for both strategies (dedicated-process and phantom-server).

however, if you find a way to make it work for both strategies send a PR

Ok, im using mustache for the html and its in a separete file, could that
make any difference?
fredag 11 december 2015 skrev BJR Matos notifications@github.com:

it works for me..
[image: captura de pantalla 2015-12-10 a las 11 55 32 p m]
https://cloud.githubusercontent.com/assets/4262050/11736240/90c97024-9f99-11e5-956d-6a0805b77a33.png
—
Reply to this email directly or view it on GitHub
https://github.com/pofider/phantom-html-to-pdf/issues/18#issuecomment-163839699
.

not really, it should work..
if you can create a repository with the code you are trying, i can help you more quickly

Just a little info..
When I run the app locally it shows just like in your example, but for some reason it doesn't in heroku.
That could be good to know, if you know a reason why I would be happy to hear about it!
Thanks for your help! :)

authors: bjrmatos stellanhaglund

repo: pofider/phantom-html-to-pdf

license: mit

license_source: bigquery


text:
Problem about BackwardsComposition associativity in episode 6

In episode 6, we saw the new operator BackwardsComposition at 09:56 timeline. In the video, we could see the associativity about this operator said associativity: left.
But in the transcript (https://www.pointfree.co/episodes/ep6-functional-setters#t545) wrote associativity: right.
I also check this operator in https://github.com/pointfreeco/swift-prelude/blob/master/Sources/Prelude/Operators.swift#L6, and the associativity is right in https://github.com/pointfreeco/swift-prelude/blob/master/Sources/Prelude/PrecedenceGroups.swift#L80.
So I think we should add Video Correction block in this transcript.

Hi @Arcovv! Nice catch! I've updated the transcript to match the video and am deploying the change now.
Luckily function composition is fully associative (f <<< (g <<< h) = (f <<< g) <<< h), so the direction of the associativity doesn't matter: the end result will behave the same. In the episode we just reached for the first direction we thought of, and in Prelude we copied from Haskell's precedence groups. Haskell seems to have picked "right" for a reason that doesn't seem to affect us in Swift: https://stackoverflow.com/questions/20342860/why-is-function-composition-in-haskell-right-associative
So in this case I don't think a correction block is necessary, but the code sample should definitely match what you see on the screen!

authors: Arcovv stephencelis

repo: pointfreeco/pointfreeco


text:
Comparing extracted optional to non-optional value

This is a follow up to the regression discussed in #40 - the fix in #41 fixed the issues we were seeing with 0.5.0 when using a case path in a pullback, however I still had the following issue with this fix.
We have an interface that returns a Result<T?, Error> which we were using in a test assertion which is now failing unless I unwrap the optional. For example, given something like this:
func fetch() -> Result<String?, Error> {
  return .success("hello world")
}

The following assertion now fails, but used to pass:
XCTAssertEqual(
    "hello world",
    extract(case: Result.success, from: fetch())
)

However, this does pass:
XCTAssertEqual(
    .some("hello world"),
    extract(case: Result.success, from: fetch())
)

I can of course just do this:
XCTAssertEqual(.success("hello world"), fetch()))

I don't know if this is a blocker but I think its worth highlighting the behaviour change. @mayoff mentioned he had a possible fix for this.

@lukeredpath We merged his fix into main about an hour ago. Can you try your test against that to confirm? We have a few things to prep before a 0.6.0 is released, but more eyes on it would definitely be helpful!

@stephencelis just retried against main and this is still an issue. Its not a big blocker for us because its only affecting our tests, which I can rewrite to work around this, but it does still fail.
The failure message is even more confusing to me. If I hit a breakpoint and call fetch() I can see it's returning a Result<T, E>.success(value) but if I do:
XCTAssertEqual(value, extract(case: Result.success, from: fetch())

XCTest gives me the failure message:
"XCTAssertEqual failed, (Optional(value)) is not equal to ("nil")"

As before, either changing value in the assertion to .some(value) or explicitly unwrapping the extracted value by doing extract(case: Result.success, from: fetch())! makes the assertion pass and I can also just do XCTAssertEqual(.success(value), fetch()) which is probably simpler!

The unconstrained type of Result<String?, Error>.success is (String?) -> Result<String?, Error>.
Therefore unconstrained type of extract(case: Result.success, from: fetch()) is String?? (note the double Optional).
The unconstrained type of "hello world" is String.
Swift is willing to promote "hello world" to .some("hello world"), but it will not promote it to .some(.some("hello world")). That is, Swift will add a single layer of Optional if needed for type checking.
Swift can promote a function of type (String?) -> Result<String?, Error> to a function of type (String) -> Result<String?, Error> (because String? is in contravariant position).

So, to make the XCTAssertEqual statement compile, Swift performs two promotions:

It promotes "hello world" to .some("hello world").
It promotes Result<String?, Error>.success to (String) -> Result<String?, Error>.

This makes extract(case:from:) return type String? instead of type String??. This leads the implementation of extract to expect the associated value type to be String, but the associated value type is actually String?.
This commit fixes the problem. I'll move it to a new branch off main and submit a pull request shortly.

Thanks @mayoff for diving in once again! Amazing what optional promotion does to simple runtime analysis 😅
Hopefully Swift gets proper case paths in the language eventually, and hopefully these edge cases are dwindling in number...

@stephencelis @mayoff thanks again for your work on this. I've just updated our dependency to 0.6.0 and our full test suite is now passing.

authors: lukeredpath mayoff stephencelis

repo: pointfreeco/swift-case-paths


text:
Targets Python 3.5

This step is required before fixing #74. Also, implemented idea to solve NumPy version madness when testing (cc @newlawrence).

Now the builds will take longer unfortunately. I strive for dropping Python 3.3 support by next year as detailed in the wiki https://github.com/poliastro/poliastro/wiki/Python-support-roadmap.

repo: poliastro/poliastro


text:
Expand test coverage

... it has been slacking a bit.

@jacogr  Is this being worked upon ?

repo: polkadot-js/client


text:
Update all.json

Site
URLScan link

imtokens.news
https://user-images.githubusercontent.com/49607867/163696364-50096eab-9029-41e9-90b1-7f51e313183f.png

auth-jog.com
https://user-images.githubusercontent.com/49607867/163696474-d8751a5e-7c4f-4432-9ad9-0f57512fce61.png

bcnodecenter.net
https://user-images.githubusercontent.com/49607867/163696403-2164983b-f64c-469b-a32f-e2a92d887c69.png

bitwayplus.com
https://urlscan.io/result/69f28098-acdb-41f0-b9b8-f6aa029fc189/dom/

dapp-smartdefitoken.online
https://user-images.githubusercontent.com/49607867/163701755-9abb1c67-ef5f-4882-8af6-5b916411e7ab.png

	"imtokens.news",

	"auth-jog.com",

	"bcnodecenter.net",

	"bitwayplus.com",

            "dapp-smartdefitoken.online",

i didnt know how to rebase so deleted the old one and made a fresh one
i hope it knows not to do it "out of order" this time
also last mine were mine, so i have no idea why rebasing was needed in the first place (sorry i am dumb)

Please no rebasing 🧿📿

All good. I just recommend rebasing since there's a conflict, but it's better create a new PR since you need to know what you're doing when rebasing (as it rewrites history).

Thank you and sorry for the trouble.

repo: polkadot-js/phishing


text:
type *polygon.PolygonClient has no field or method ListTickers

Describe the bug
Upon installing and initializing the client as proposed in README.md, it is not possible to use the client as the documentation suggests. The returned pointer does not seem to implement the client functionality.
To Reproduce

Create a fresh go module using go mod init
Add client using go get github.com/polygon-io/client-go
Create a simple program as suggested by the documentation in README.md:

package main

import (
	"context"
	polygon "github.com/polygon-io/client-go/rest"
	"github.com/polygon-io/client-go/rest/models"
)

func main() {
	c := polygon.New("{REDACTED}")
	res, err := c.ListTickers(context.Background())
}

Execute the program

> go run ptest.go
# command-line-arguments
./ptest.go:11:16: c.ListTickers undefined (type *polygon.PolygonClient has no field or method ListTickers)

Expected behavior
The client module should implement the client functions.
Additional context
> go version
go version go1.18.1 darwin/arm64

Hey @aggregated, you're looking at the latest readme but I'm assuming you're using the v0.3.0 tag. Take a look at that tag's readme for help: https://github.com/polygon-io/client-go/tree/v0.3.0.
We're still in pre-release and will be making breaking changes as needed (use at your own risk). The latest readme reflects the state of things in v0.4.0 which will be released tomorrow. Going to close this since it's not actually a bug but thanks for submitting the issue!

Hello @morningvera,
thank you for the clarification, my mistake.
We're currently implementing a new data collector and would love to use this API client. The other option would be writing one, which is not favorable.
I understand the pre-release nature of this repository, but if you were to use it (and accepting you would most likely have to revise again later), could you please point me to the commit you would use?

@aggregated I'd suggest using v0.4.0 as soon as we release it tomorrow! The REST client is approaching stability and will be less likely to change after tomorrow's release. It's also going to include a WebSocket client (pretty full featured at this point but maybe not totally stable).

authors: aggregated morningvera

repo: polygon-io/client-go


text:
Add prometheus server and basic eth/engine rpc metrics

Change Overview
Adds a prometheus server to the monomer node that's configured through the CometBFT Instrumentation config in the cosmos SDK app's config.toml file. These changes will allow for easy Prometheus/Grafana integrations. Additionally, adds basic eth and engine RPC metrics:

Count and duration (histogram buckets) of the following eth RPC calls:

eth_getChainId
eth_getBlockByHash
eth_getBlockByNumber

Count and duration (histogram buckets) of the following engine RPC calls:

engine_forkchoiceUpdatedV3
engine_getPayloadV3
engine_newPayloadV3

Sample prometheus server response
Local configuration
To test metrics locally, setup up a monomer node with prometheus enabled in the CometBFT config.toml file (or just inject directly into the server context). Here is an example instrumentation config with prometheus enabled:
[instrumentation]
prometheus = true
prometheus_listen_addr = ":26660"
max_open_connections = 1
namespace = "monomer"

Then, either query the prometheus metrics directly at http://localhost:26660/metrics or start up a local prometheus server by following the prometheus docs for installation and using this scrape config in prometheus.yml:
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "monomer"
    static_configs:
      - targets: ["localhost:26660"]

Summary by CodeRabbit

New Features

Introduced Prometheus metrics integration for enhanced monitoring and performance tracking.
Added new methods to handle Prometheus server errors.

Bug Fixes

Enhanced error handling and reporting for the Prometheus server.

Tests

Updated tests to include new Prometheus configuration parameters.

Chores

Added new import statements and configurations to support the Prometheus integration.

To test metrics locally, setup up a monomer node with prometheus enabled in the CometBFT config.toml file (or just inject directly into the server context). Here is an example instrumentation config with prometheus enabled:

Where should that config.toml file be? Is there one in repo now?

To test metrics locally, setup up a monomer node with prometheus enabled in the CometBFT config.toml file (or just inject directly into the server context). Here is an example instrumentation config with prometheus enabled:

Where should that config.toml file be? Is there one in repo now?

@NiloCK The config.toml file will exist in the repo of the Cosmos SDK chain that's using monomer for its consensus. That file is parsed at the appchain level and is then passed through to monomer in the StartCommandHandler as svrCtx.Config. For testing, we can just set the svrCtx.Config values directly in the monomer StartCommandHandler since those values will already be set before entering the monomer repo.
Existing example in integrations_test.go:
https://github.com/polymerdao/monomer/blob/3d13d206de58eaa166812df1cee798575f03fd39/integrations/integrations_test.go#L50-L54

authors: NiloCK natebeauregard

repo: polymerdao/monomer


text:
Invalid key error

I just noticed that the rewards from PPDNS have been stopped since 11th August.
I tried re-installing the extension manually and via Chrome Web Store, and I also regenerated the API keys, but none of them worked.
How can I fix this?
OS: Linux Mint
Browser: Google Chrome 129.0.6668.70（Official Build） （64 ビット）

Thanks for reporting the issue @izayoi256. The extension shows a message every time it cannot talk to our services, but does not show a message when it finally is able to do it. We are considering to change that behavior.
As you said to had already regenerated your API Key, your data is probably being ingested correctly.
About the distribution, we are already investigating the cause. The distributions will occur retroactively.
Best regards, Alan (a PolySwarm Dev).

@alanjds
The problem is that the new API key won't even be accepted by the app like the image below.

The problem is that the new API key won't even be accepted by the app like the image below.

I see. I found this issue during the changes being done this week. Looks like the API Key is not being recognized anymore, as some other service changed behind my back :) .
I expect a new version to be released this week, fixing this and providing better error messages.

@izayoi256 I see that you closed the issue as "completed". As a new version got released to handle the issue, I will assume this as a confirmation that it is fixed.
Please reopen this issue if still broken. And thanks again for reporting 👍.
Best regards.

@alanjds
Oh, sorry for closing the issue without any responses. Yes, the problem itself was fixed now for me.
Thanks for your quick responses and fix.

authors: LuckRen alanjds izayoi256

repo: polyswarm/ppdns-chrome-extension


text:
cytoplasmic microtubules

we have a number of terms referring to cytoplasmic microtubules.
When people refer to "cytoplasmic microtubules"   without any further specification they are always referring to interphase microtubules (even though there are non interphase cytoplasmic microtubules from the SPB).
I wonder if we could rename the terms to interphase microtubules?  (which would differentiate from  astral cytoplasmic microtubules).
This would allow some terms (which mean the same thing) to be merged.
Anything annotated to
"long cytoplasmic microtubules"  would be
"long cytoplasmic microtubules during mitotic interphase"
but the term name would be  "long interphase microtubules"
The associated curved terms would become "long curved interphase microtubules".
Otherwise quite a lot of annotation revisions will be required. We will need to move everything down to the "during mitotic interphase" term. Annotation would also be simpler as we would  have slightly fewer terms. Its a little confusing at the moment.

We can rename some of the "cytoplasmic microtubule" terms, but not all (one of your examples is one that actually can't change or merge). These will have to remain as "cytoplasmic microtubule" because they have descendants that refer to astral microtubules:
FYPO:0004088	abnormal cytoplasmic microtubules
FYPO:0005693	abolished cytoplasmic microtubule nucleation
FYPO:0004702	cytoplasmic microtubules absent from cell
FYPO:0000233	long cytoplasmic microtubules
FYPO:0001976	normal cytoplasmic microtubules
FYPO:0002760	short cytoplasmic microtubules
Even the ones that get "interphase microtubule" names will still have text definitions and exact synonyms using the "cytoplasmic microtubules during mitotic interphase" pattern, because that's how they will still have to be defined logically.
Also bear in mind that if we ever do create a species-neutral cell phenotype ontology, it won't allow this equivalence. Likewise, if someone else does the generic ontology, these changes will make this part of FYPO map less neatly to it.

further note to self:
add "interphase" versions of short and absent-from-cell terms
interphase terms exist for the others (long, normal, abnormal, nucleation)

I think all of the long,  or curved cytoplasmic microtubule observations refer to interphase microtubules, except  a single annotation to "long astral microtubules during mitotic anaphase A"
Perhaps  do the ones possible, and we should put a soft check on  any non-specific cytoplasmic terms that are required for grouping to make sure we  always specify interphase or
astral.
This will let us know which ones need to be moved down.
Will that work?

Outstanding question: should I rename these?
FYPO:0004727	cytoplasmic microtubule formation from nuclear microtubules
FYPO:0004728	cytoplasmic microtubule formation from nuclear microtubules following nuclear envelope breakthrough
FYPO:0004729	cytoplasmic microtubule formation from nuclear microtubules following spindle microtubule fragmentation
Other than that, I've renamed all of the "cytoplasmic microtubule" terms except the ones that group interphase and astral (listed in my earlier comment above).
New terms:
abnormal interphase microtubules FYPO:0006101
interphase microtubules absent from cell FYPO:0006102
short interphase microtubules FYPO:0006103
Merges:
FYPO:0005812 into FYPO:0004731
FYPO:0005856 into FYPO:0005842
edit file: ffdd83fa748d74175fd9956e24f3c5d7fca0df50
release: 76e6d3958f70dff85f97ae7f370dbb0c1f63d300

Hmm, good question. I think these should probably stay s they are because I'm not sure  exactly the timing of these phenotypes.

Thanks. That makes sense, and I like that it means I think this one's done :)

repo: pombase/fypo


text:
Use inheritance for ScienceMeshShareProvider.php

I get the feeling https://github.com/pondersource/nc-sciencemesh/blob/main/lib/ShareProvider/ScienceMeshShareProvider.php contains copy-pasted code from https://github.com/nextcloud/server/blob/master/apps/federatedfilesharing/lib/FederatedShareProvider.php so that should be cleaned up first, we should use inheritance for functions like getChildren etc

We should fix this for NC in the main branch and then in #186 port the fix to the oc-10-take-2 branch.

repo: pondersource/sciencemesh-php


text:
Optional field for rbac resources

It seems that the ClusterRoleBinding to the admin ClusterRole is necessary for Portainer to function fully in Kubernetes, particularly for deployments beyond Edge compute features. This enables the option to disable RBAC when full Kubernetes cluster management is not needed.
The current Portainer Helm chart does not provide an option to disable the RBAC-related templates, including ClusterRoleBinding creation, via the values file. This lack of configurability prevents us from aligning with our security requirements.
A proposed solution would be to include a flag in the values file like: rbac: true/false and create the RBAC template accordingly

@emagiz you should modify the following files for this to work. charts/portainer/templates/serviceaccount.yaml charts/portainer/templates/rbac.yaml charts/portainer/templates/deployment.yaml //need to add condition to not include service account when values.rbac=false not the file under deploy

Are you sure you want to disable the SA when disabling RBAC? This would disable the option to create an SA without having the RBAC. One possible usecase for having a SA but not a CR would be to use AWS IAM roles for by assigning them to SA's. (see https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html). I understand the view that portainer does not need the SA, but you would block people from having a flexible chart.

@emagiz you should modify the following files for this to work. charts/portainer/templates/serviceaccount.yaml charts/portainer/templates/rbac.yaml charts/portainer/templates/deployment.yaml //need to add condition to not include service account when values.rbac=false not the file under deploy

Are you sure you want to disable the SA when disabling RBAC? This would disable the option to create an SA without having the RBAC. One possible usecase for having a SA but not a CRB would be to use AWS IAM roles for by assigning them to SA's. (see https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html). I understand the view that portainer does not need the SA, but you would block people from having a flexible chart.

I don't see why there is a need to create the Service Account when it's not being used. Service account with no roles is not going to be useful anyway and there is no point to have AWS IAM role for it.

@stevensbkang
Could you please review this and comment? Thanks

authors: MartijnWoudstra emagiz samdulam


text:
container tab / create new container => docker.io search box does not show/suggest local stored images

I am a beginner on using Docker on a Raspberry Pi. OS is Raspbian lite, Docker has been installed by Docker script. Afterwards I just installed Portainer-CE 2.16.2.
I have some issues with the use of Portainer: I have already downloaded some Docker hub images to local storage. But when I want to add/install a new container (container tab => press "+add container") and typing in a name of a local stored image that has already been downloaded in the docker.io search box, nothing happens.
This behavior is completely different from all seen video tutorials on this topic.
What am I doing wrong?
Screenshot#1 is docker.io search box in images tab:

Screenshot#2 is docker.io search box in container tab:

@PetaHub
I have an internal issue that has been logged regarding the image drop-downs.  I do not yet have a timeline or release.
Thanks!

authors: PetaHub tamarahenson

repo: portainer/portainer

license: Zlib


text:
PA-724: Add DeleteBackupAndWait() call in DeleteIncrementalBackupsAndRecreateNew case

What this PR does / why we need it:
In the latest run http://aetos.pwx.purestorage.com/resultSet/testSetID/138472, we saw the testcase failing as the delete call was happening when the new incremental backup was created and the indices got wiped right in the middle of the new incremental backup causing the job to fail as it ended up taking a full backup.

[x] Add DeleteBackupAndWait() call

Which issue(s) this PR fixes (optional)
Closes # PA-724
Special notes for your reviewer:
Will squash and merge don't get bothered by the number of number of commits.

I think we should rename DeleteBackupAndWait to WaitForDeletionOfBackup

Yes @tthurlapati-px, I plan to do that in the next PR.

As discussed, we need to change the iteration order.

authors: kshithijiyer-px mkoppal-px

repo: portworx/torpedo


text:
Have a path adding a destination with no entrypoints found

Could have an unknown type and require they change it
Could list all of our valid schema types and have the user choose

For now, we will improve the error messaging to describe the issue and link to the docs.

authors: dotNomad mmarchetti

repo: posit-dev/publisher


text:
Error Cert

I have a problem using TLS on my server.
Postal is fetching files from the main domain.com and not from postal.domain.com
How to fix this error?

[smtp.1:1067] [2021-04-09T14:45:06.104] DEBUG -- : [D8NGJP] => 250-STARTTLS
[smtp.1:1067] [2021-04-09T14:45:06.104] DEBUG -- : [D8NGJP] => 250 AUTH CRAM-MD5 PLAIN LOGIN
[smtp.1:1067] [2021-04-09T14:45:06.144] DEBUG -- : [D8NGJP] <= STARTTLS
[smtp.1:1067] [2021-04-09T14:45:06.144] DEBUG -- : [D8NGJP] => 220 Ready to start TLS
[smtp.1:1067] [2021-04-09T14:45:06.144] ERROR -- : [D8NGJP] An error occurred while processing data from a client.
[smtp.1:1067] [2021-04-09T14:45:06.144] ERROR -- : [D8NGJP] Errno::ENOENT: No such file or directory @ rb_sysopen - /etc/letsencrypt/live/domain.com

Either that folder doesn't exist or the postal user has no read permissions on it so it cannot access the file.

Thanks for the answer.
But he doesn't really have that folder, because he's looking for the main domain.com file. And not from the subdomain of postal.domain.com
You got it? That is why it is giving encryption error in emails because the postcard does not match the certificates of the subdomain, but of the main domain.
How to make the postcard look for the subdomain certificate?

It will be looking for whatever has been configured in the config file, I do not believe it needs to account for multiple domains here.
As long as it is a real SSL certificate it can be used, regardless of the domain.

repo: postalhq/postal


text:
CWE-78 fix for v2

I use a package (css-loader) which indirectly depends on v2 of postcss-filter-plugins, so porting the cwe-78 fix to the older version would fix the audit warnings for myself and the many other people who use css-loader, or current versions of cssnano.
I literally just cherry-picked the changes from 3.0.1 onto 2.0.2.
(looks like y'all don't have a branch for v2, and I guess github doesn't have a way to suggest creating a new branch in the base repository? strange.)

@rettgerst please solve merge problem

This is based on an older version of master, so merge problems are OK and expected. I need to manually merge.

@RyanZim can we wait release in near future?

Cherry-picked to https://github.com/postcss/postcss-filter-plugins/tree/2.x.x and released as 2.0.3. :tada:
Please consider upgrading to PostCSS v6 and postcss-filter-plugins v3 if possible.

can you publish it to npm? doesn't look like it's up yet

@rettgerst looks npm have some problems, i can't publish own package too, just wait

authors: RyanZim evilebottnawi rettgerst

repo: postcss/postcss-filter-plugins


text:
Clean up Connections/Channels

I'm creating additional Connection to RabbitMQ and creating Queue on those additonal RabbitMq Connections for each User in my application.  However, i'm trying to clean those connections and channels when the user closes the application, but it seems i'm only able to Destroy the queues i have created with no issue.  Clearing those connections using connection.end will cause an error in my application in regard to amqp.* although i'm sending an empty string '' to create the queues.
Is there an option or a way i can clear Connections/Channels when a user closes or refreshes the application?

I have the same problem.
My solution is to create connection and channel once when initialising the app. Then use it later.
Looking forward for better solution.

repo: postwait/node-amqp


text:
[#56]Fix : 회고록 반환 데이터 추가

작업 사항
회고록 조회,수정 시 마감 날짜를 포함하여 반환 하도록 수정하였습니다.
chore(dto) : DiaryResponse 필드 추가

마감 날짜를 포함하여 반환하도록 수정하였습니다.

chore(Test_Diary) : DiaryControllerTest RestDocs 수정

회고록 반환 필드에 마감 날짜가 추가되어, 해당 내용을 추가하였습니다.

테스트 커버리지 리포트입니다

File
Coverage [89.01%]
:green_apple:

DiaryResponse.java
89.01%
:green_apple:

Total Project Coverage
73.94%
:x:


text:
Promises not catched with Angular 6 & zonejs

So I got an Angular 6 application w/ zone.js@0.8.26 running in Chrome 67.
When I run the following code I get an error using worker-pouch
db.get('invalidbla').catch(e => console.log('catched'))

I get the following console output
> catched
> core.js:1624 ERROR Error: Uncaught (in promise): Object: {"error":"not_found","name":"not_found","reason":"missing","message":"missing","status":404}
    at resolvePromise (zone.js:814)
    at zone.js:724
    at zone.js:740
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:388)
    at Object.onInvoke (core.js:3757)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:387)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (zone.js:138)
    at zone.js:872
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (core.js:3748)
defaultErrorLogger @ core.js:1624
push../node_modules/@angular/core/fesm5/core.js.ErrorHandler.handleError @ core.js:1670
next @ core.js:4252
schedulerFn @ core.js:3488
push../node_modules/rxjs/_esm5/internal/Subscriber.js.SafeSubscriber.__tryOrUnsub @ Subscriber.js:195
push../node_modules/rxjs/_esm5/internal/Subscriber.js.SafeSubscriber.next @ Subscriber.js:133
push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber._next @ Subscriber.js:77
push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.next @ Subscriber.js:54
push../node_modules/rxjs/_esm5/internal/Subject.js.Subject.next @ Subject.js:47
push../node_modules/@angular/core/fesm5/core.js.EventEmitter.emit @ core.js:3480
(anonymous) @ core.js:3779
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke @ zone.js:388
push../node_modules/zone.js/dist/zone.js.Zone.run @ zone.js:138
push../node_modules/@angular/core/fesm5/core.js.NgZone.runOutsideAngular @ core.js:3716
onHandleError @ core.js:3779
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.handleError @ zone.js:392
push../node_modules/zone.js/dist/zone.js.Zone.runGuarded @ zone.js:154
_loop_1 @ zone.js:677
api.microtaskDrainDone @ zone.js:686
drainMicroTaskQueue @ zone.js:602
push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask @ zone.js:500
invokeTask @ zone.js:1540
globalZoneAwareCallback @ zone.js:1566

When I run in with adapter: idb the output is just catched.
I am unsure how to continue debugging this though.

+1.
When running the following code in incognito tab the error can be observed:
https://stackblitz.com/edit/angular-worker-pouch-working

authors: HarelM rweng

repo: pouchdb-community/worker-pouch


text:
db.r5.4xlarge memory is incorrect

db.r5.4xlarge shows 192 GiB but it is actually 128 GiB

duplicate of #408

authors: ccayg-sainsburys disk-edit


text:
Rename and ignore source items

Is there an option to rename source elements, e.g. 'hdmi1' -> 'FireTV'? Additionally, I would like to hide single elements from the source list like 'tidal'. The yamaha package has a source_names and source_ignore option - is there something similar?
So far, I am using musiccast_yamaha only in combination with the mini media player. Therefore, a solution on the UI side would also be sufficient. However, I couldn't find one either.
Thanks for your help!

v0.4 now supports source rename and source ignore. thanks @KaSroka !

authors: DennisWilken ppanagiotis

repo: ppanagiotis/pymusiccast


text:
Update kubernetes/master/golang/master build

This is an automated PR via build-bot

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: ltccci
To complete the pull request process, please assign
You can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


text:
Update kubernetes/master/golang/master build

This is an automated PR via build-bot

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: ltccci
To complete the pull request process, please assign  after the PR has been reviewed.
You can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


text:
Integrate k8s-conformance job to use Boskos resources

This PR

Updates the Boskos deployments
Updates the external secret used by janitor
Updates the conformance job to use Boskos

/cc @mkumatag


text:
Add gcs configuration to kubernetes unit and conformance ppc64le periodic jobs

Ref: https://github.ibm.com/powercloud/container-dev/issues/1333

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: Rajalakshmi-Girish
To complete the pull request process, please assign mkumatag after the PR has been reviewed.
You can assign the PR to them by writing /assign @mkumatag in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Please fix the author's name and email, it is showing root right now.

Please fix the author's name and email, it is showing root right now.

I am not sure where you wanted me to change these details. @mkumatag Can you please elaborate.

I am not sure where you wanted me to change these details. @mkumatag Can you please elaborate.

If you look at the author of this PR's commit it shows as root which is not correct, please amend the commit with the proper email and name and rebase the PR as well to accommodate the latest changes in the code.

I am not sure where you wanted me to change these details. @mkumatag Can you please elaborate.

If you look at the author of this PR's commit it shows as root which is not correct, please amend the commit with the proper email and name and rebase the PR as well to accommodate the latest changes in the code.

Done. @mkumatag please check.

/lgtm
/approve

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: mkumatag, Rajalakshmi-Girish
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [mkumatag]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@Rajalakshmi-Girish: Updated the job-config configmap in namespace prow at cluster default using the following files:

key test-kubernetes-periodics.yaml using file config/jobs/periodic/kubernetes/test-kubernetes-periodics.yaml

In response to this:

Ref: https://github.ibm.com/powercloud/container-dev/issues/1333

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

authors: Rajalakshmi-Girish ltccci mkumatag


text:
The wrong audio class is used on iOS

When running the game while music is playing (e.g. via Apple Music), the music is expected to be paused but instead keeps running in the background.

This has now been merged. :)

authors: TimOliver smoogipoo

repo: ppy/osu-framework


text:
CircularContainer should have Masking set to true by default

Circular edges only seem to show when masking is enabled so it seems like a sensible default?

I believe this was intentional, but really the amount of times you're using a circular container purely for input-masking purposes are few and between.

The reasoning behind not doing this was a result of a lengthy discussion years back, where we generally came to the consensus that setting default values on a per-container basis is quite a hidden implementation (even if the specifications were sane).
I wouldn't be against this change, but I think if we're going to add more sane defaults we probably, at very least, need a method of documenting them somewhere visible to the consumer.

authors: jai-x peppy smoogipoo


text:
Fix binding bindables potentially transfers values while it's disabled

Resolves #3218
This fixes the issue by transferring the values directly via Set... methods, which bypass the disabled check.

Did those failing tests somehow pass for you locally?

The tests are failing because this is actually a breaking change in terms of semantics of BindTo(). Before, BindTo() would adhere to the general bindable rule of "if binding to the other bindable doesn't change the current value, don't trigger value change events", which is no longer the case when using Set{Value,DefaultValue,Disabled}, which propagates unconditionally. As seen by the test results breaks the interactions of BindTo() and bindable leasing, among other things.

Yep, that's precisely it. I'm just horribly confused how this made it to PR state without that being realised, since bindables are one of the areas we have pretty flawless test coverage.

The tests are failing because this is actually a breaking change in terms of semantics of BindTo(). Before, BindTo() would adhere to the general bindable rule of "if binding to the other bindable doesn't change the current value, don't trigger value change events", which is no longer the case when using Set{Value,DefaultValue,Disabled}, which propagates unconditionally. As seen by the test results that breaks the interactions of BindTo() and bindable leasing, among other things.

Ah, my bad on this one, pushed things blindly.
Should be good now, one thing to note though is that the equality comparer inside Set...() methods uses the current value instead of previousValue for checking (eg: this.value instead of previousValue), having 2 things that should logically be the same but are coming from different members doesn't sound good to have.
Not quite sure what to do with it, I still don't get why previousValue exists in the set methods, bindables should never be desynchronised unless I overlooked something.

Tests disagree, the newest version still apparently breaks leasing. Did you run them all before pushing?

Yeah... I haven't, looking into it.

Closing this as I think it's better to resolve this with the BindableProperty refactor rather than touching on the existing value propagation logic.

authors: bdach frenzibyte peppy


text:
Pick uniform convention for inclusive vs.exclusive bounds in runtime and CBMC bounds checking macros

We have debug-build runtime checks (e.g. POLY_BOUND(...)) as well as CBMC assertions ARRAY_IN_BOUND(...) both expressing bounds on an int16_t array. However, the runtime assertions use exclusive bounds, while the CBMC assertions use inclusive bounds. This is confusing and was close to leading to a poor spec in #https://github.com/pq-code-package/mlkem-c-aarch64/pull/313.

[ ] Make a pick and use inclusive or exclusive bounds in both runtime and CBMC bounds checking macros.

@rod-chapman Can you work on this?
I lean towards following the inclusive bound convention from our CBMC macros, which would mean merely changing the few runtime assertions.

Agree - this should be consistent.
I don't think this is essential for the alpha-release. Moving to the next one.

I've been thinking a bit on this one. Writing assertions and contracts, I always tend to use inclusive bounds, but I've been trying to work out why... observations:

Ada's subtype inclusion operator ("X in S") and subtype range declaration ("type T is range 0 .. 3328;") are inclusive at both ends, so writing explicit bounds the same way always feels consistent to me, and it's ground into me as a habit over the last 30 years. But that's just Ada for you...
Thinking about proofs, I prefer inclusive bounds since (I think) I find it easier to derive one inequality from another if the ranges are inclusive.  e.g. if I know

a <= b

then I can ask the tool to prove something like
a + C <= b + C

with reasonably confidence that I haven't screwed it up. I always seem to get it wrong where "<" and ">" are involved.
Also things like transitivity:
(a >= b) and (b >= c) -> (a >= c)

feel more natural to be with inclusive relations.
Does any of that make sense?

Not sure I can follow the transitivity argument. Doesn't  a>b and b>c imply a>c? Maybe I need more caffeine.
I have no strong opinion on using inclusive or exclusive bounds - but I'd like it to be consistent.
Since you both lean towards inclusive bounds, let's go for that and change the runtime assertions.

Yeah... the transitivity rules work with ">" of course, but I just find it easier to think about them if they all of the same "sense".

authors: hanno-becker mkannwischer rod-chapman

repo: pq-code-package/mlkem-native


text:
Add MQuaresma to pqcp org

If you want to be able to assign bugs to someone, they only need Read access.
Please include:

GitHub ID to add: MQuaresma
Project to be added to: libjade

Part of https://github.com/pq-code-package/tsc/issues/24

Team to be added to: pqcp-contributors, pqcp-libjade

invite sent!

repo: pq-code-package/tsc


text:
Option to disable timeline point selection

This is a feature request.
In the "VERTICAL" or "VERTICAL_ALTERNATING" mode, perhaps a prop can be added to the Chrono component to disable the selection of a point in the timeline.
In the following example, the top-most point is being selected. I am hoping to disable this.

Thanks!

@marcus2k is there a specific reason why you want to disable the timeline point selection.

Personally, I want to use Chrono as a simple timeline, I have no need for the point selection, I also believe there should be an option to disable it, when I have the timeline vertically and disable controls there really isn't any use for the point selection

+1 to this, I would love a prop to disable timeline point selection. Also I just want to say this is a great component 🙌  thanks for the work you do

the width of the line can be customized via lineWidth and the circle dimension can be adjusted via timelineCircleDimension

repo: prabhuignoto/react-chrono


text:
Adding .dll for testing

Hi, when you do testing, do you manually add the sqlite3.dll into your testing folder? Just curious how you do the setup.

I develop on and the CI runs on a mac which has the library built in.
Eventually I'll get a test to go against the raw version of the library.

authors: praeclarum tofutim

repo: praeclarum/sqlite-net


text:
add message sending application worker

We need an application worker that will take MO messages and send them to the provided URL. The plan is that a separate PR will handle the starting/stopping of the worker (when channels are started/stopped).

One minor thing, looks good :)

Changes made. Ready for review again

:+1:

authors: justinvdm rudigiesler

repo: praekelt/junebug


text:
Handle unsubscribed or opted out users making changes

[ ] Deny opted out users access?
[ ] Broken baby switching on no active subscriptions

Tracked in https://praekeltorg.atlassian.net/projects/MOMNG/issues/MOMNG-82

authors: gsvr imsickofmaps

repo: praekelt/mama-ng-jsbox


text:
Question: Installation issues

I'm trying to integrate your package into an existing Nestjs 7 app. I've basically copied and pasted the example from the readme, but it seems to fail when I attempt to get a span. I'm very new to OpenTelemetry so can't really say I have much of a conceptual model to support debugging.
The code that generates the error is from the readme example

and lower down

The currentSpan is undefined resulting in the addEvent failing
{"level":50,"time":1629306567682,"pid":111,"hostname":"a68e9c9c5b3c","req":{"id":"dcaa44df-0249-4f43-b9ad-1948dfa74b1b","method":"POST","url":"/api/v3/authenticate","remoteAddress":"::ffff:172.28.0.3","remotePort":53100},"logId":"11fd25fa-8aec-4762-a06c-f2f15c11e0c1","context":"ExceptionsHandler","trace":"TypeError: Cannot read property 'addEvent' of undefined\n    at AuthenticationService.authenticationFinalization (/usr/src/app/dist/identity/apis/authentication/authentication.service.js:71:21)\n    at /usr/src/app/node_modules/nestjs-otel/lib/tracing/decorators/span.js:14:35\n    at NoopContextManager.with (/usr/src/app/node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js:36:24)\n    at ContextAPI.with (/usr/src/app/node_modules/@opentelemetry/api/build/src/api/context.js:71:54)\n    at AuthenticationService.PropertyDescriptor (/usr/src/app/node_modules/nestjs-otel/lib/tracing/decorators/span.js:11:38)\n    at AuthenticationController.authenticateWithUsernameAndPassword (/usr/src/app/dist/identity/apis/authentication/authentication.controller.js:46:64)\n    at /usr/src/app/node_modules/@nestjs/core/router/router-execution-context.js:38:29","msg":"Cannot read property 'addEvent' of undefined"}

When stepping into the traceService.getSpan I can see that _currentContext map is empty

Any thoughts on what may not be correct?
Many thanks for making this package and the time to review this message.

hi @cramhead could you provide some insight on your trace.ts + nestjs-otel setup? I've just tested everything you posted here in the example. It works. Did you end up setting up the trace file like in the example?

I will push my example changes in a few min.

Example of a custom span I created

Hi @pragmaticivan,
Thanks for helping.
The trace.ts. Note: commented to process import as it was causing an error. Otherwise, it's a direct copy and paste from the readme The shutdown does log correctly.
import {
    CompositePropagator,
    HttpTraceContextPropagator,
    HttpBaggagePropagator,
} from '@opentelemetry/core';
import { BatchSpanProcessor } from '@opentelemetry/tracing';
import { JaegerExporter } from '@opentelemetry/exporter-jaeger';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
import { JaegerPropagator } from '@opentelemetry/propagator-jaeger';
import { B3InjectEncoding, B3Propagator } from '@opentelemetry/propagator-b3';
import { PrometheusExporter } from '@opentelemetry/exporter-prometheus';
import { NodeSDK } from '@opentelemetry/sdk-node';
import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';
// import * as process from 'process'; removed as TypeError: process.on is not a function

const otelSDK = new NodeSDK({
    metricExporter: new PrometheusExporter({
        port: 8081,
    }),
    metricInterval: 1000,
    spanProcessor: new BatchSpanProcessor(new JaegerExporter()),
    contextManager: new AsyncLocalStorageContextManager(),
    textMapPropagator: new CompositePropagator({
        propagators: [
            new JaegerPropagator(),
            new HttpTraceContextPropagator(),
            new HttpBaggagePropagator(),
            new B3Propagator(),
            new B3Propagator({
                injectEncoding: B3InjectEncoding.MULTI_HEADER,
            }),
        ],
    }),
    instrumentations: [getNodeAutoInstrumentations()],
});

export default otelSDK;
// You can also use the shutdown method to gracefully shut down the SDK before process shutdown
// or on some operating system signal.
process.on('SIGTERM', () => {
    otelSDK
        .shutdown()
        .then(
            () => console.log('SDK shut down successfully'),
            (err) => console.log('Error shutting down SDK', err),
        )
        .finally(() => process.exit(0));
});

The tracing.ts is imported and otelSDK.start is tied into the boot sequence. We have multiple mains so previously i had missed one. Fixed now.

The config in the app.module. Note we were already using prom-client

In my authenticationService the traceService is populated. I have a method decorated with @Span and a call to the traceService to getSpan

When debugging the getSpan call I can see the _context is set

TypeScript complains that contextManager is incompatible. Could that be the problem?

Example of a custom span I created findOne Section

Super cool screenshot. I'm looking forward to seeing this too

@cramhead would you by any chance be on NestJS Discord? might be faster if I help you through messages and maybe a quick pair prog.

I've used Discord, but really only as a message board. It would be great if we could pair program some. My user is marc.dentremont#5299

Closing as you got it working, thanks!

authors: cramhead pragmaticivan

repo: pragmaticivan/nestjs-otel


text:
Added C++ Solution for 260. Single Number III with Explaination

fixes #126
Added C++ Solution for 260. Single Number III

@pranjay-poddar Please have a look

it's perfect, thanks for contributing, please update the readme as well from future contributions.


text:
Frontend Project "Unit Converter" Box Design Enhancement

Describe the Feature you want to end
Changing few design properties to make it look attractive.
Expected behavior
Attractive box design.
Screenshots (optional)
Current Design

Expected Updated Design

Additional context (optional )
N/A

@MohitGupta121

repo: pranjay-poddar/Dev-Geeks


text:
🛑 ChatGPT + DALL-E is down

In 510e101, ChatGPT + DALL-E (https://streamlit-chatgpt-dalle2.onrender.com/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ChatGPT + DALL-E is back up in af56621 after 16 minutes.

repo: prateekralhan/status


text:
Operation On Singly Linked List

Feature ✅
Description

Perform the following on a Singly Linked List:

Insert a node in the beginning
Insert a node at the end
Insert a node at nth position
Delete first node
Delete Last node
Delete nth node
Search an element in a linked list

Checklist:

[x] I have read the project guidelines.
[x] I have checked all the existing projects, before submitting a new project issue.
[x] This issue will be meaningful for the project.
[x] I will contribute more in future

Contributors are supposed to mention their coding language while asking for assignment

I want to code it in Java. Assign me please.

Can you assign it to me. Language Python

Can I code in python?

@drashtipatel2503 It is already assigned in python to someone else.

@pallavivaswani can you assign me this I will use c++

@drashtipatel2503 It is already assigned in python to someone else.

With C?

@drashtipatel2503 It is already assigned in python to someone else.

With C?

Assigned to @stuti-ui based FCFS

Can you assign this to me? I'll help in C/C++ ...

@bhavya092 Taken in C/C++

repo: pratik-choudhari/AlgoCode


text:
Completed case studies for Cogniden and Blocchat

Description : Added case studies for Cogniden and Blocchat.

@praveenyr these are the best student case studies I have ever seen. Really well done. I'm very proud of you!

repo: praveenyr/portfolio-kami


text:
Add python nightly testing

PEP478 shows Python 3.5 is scheduled for beta release  on May 24, 2015 and final release on September 13, 2015. I think it's worth starting testing on Python 3.5, but allowing failures until it is at least in beta.

Thanks!

authors: JamieMagee bboe

repo: praw-dev/praw