[isolatedDeclarations][5.5] Autofix does not work when JSX prop contains a dash -

🔎 Search Terms
isolated declarations, jsx, autofix
🕗 Version & Regression Information

This changed in commit or PR https://github.com/microsoft/TypeScript/pull/58260

⏯ Playground Link
No response
💻 Code
export const x = <div aria-label="hello" />

🙁 Actual behavior
No autofix suggestion
🙂 Expected behavior
Autofix to add explicit type annotation
Additional information about the issue
This is with "jsx": "react-jsx" in tsconfig

I've started taking a look at this, and after figuring out how to repro in fourslash, it looks like there is a crash coming from pretty deep within a call to ChangeTracker.getChanges
  1) fourslash tests
       tests/cases/fourslash/codeFixMissingTypeAnnotationOnExports47-tsx-with-dash.tsx
         fourslash test codeFixMissingTypeAnnotationOnExports47-tsx-with-dash.tsx runs correctly:
     Error: Debug Failure. False expression: Token end is child end
      at processChildNode (src/services/formatting/formatting.ts:880:27)
      at /Users/blickly/repos/TypeScript/src/services/formatting/formatting.ts:791:17
      at visitNode (src/compiler/parser.ts:441:20)
      at forEachChildInJsxAttribute (src/compiler/parser.ts:1022:16)
      at forEachChild (src/compiler/parser.ts:1251:43)
      at processNode (src/services/formatting/formatting.ts:788:9)
      at processChildNode (src/services/formatting/formatting.ts:889:13)
      at processChildNodes (src/services/formatting/formatting.ts:955:40)
      at /Users/blickly/repos/TypeScript/src/services/formatting/formatting.ts:794:17
      at visitNodes (src/compiler/parser.ts:447:20)
      at forEachChildInJsxAttributes (src/compiler/parser.ts:1019:16)
      at forEachChild (src/compiler/parser.ts:1251:43)
      at processNode (src/services/formatting/formatting.ts:788:9)
      at processChildNode (src/services/formatting/formatting.ts:889:13)
      at /Users/blickly/repos/TypeScript/src/services/formatting/formatting.ts:791:17
      at visitNode (src/compiler/parser.ts:441:20)
      at forEachChildInJsxOpeningOrSelfClosingElement (src/compiler/parser.ts:1191:9)
      at forEachChild (src/compiler/parser.ts:1251:43)
      at processNode (src/services/formatting/formatting.ts:788:9)
      at processChildNode (src/services/formatting/formatting.ts:889:13)
      at /Users/blickly/repos/TypeScript/src/services/formatting/formatting.ts:791:17
      at visitNode (src/compiler/parser.ts:441:20)
      at forEachChildInParenthesizedExpression (src/compiler/parser.ts:756:16)
      at forEachChild (src/compiler/parser.ts:1251:43)
      at processNode (src/services/formatting/formatting.ts:788:9)
      at processChildNode (src/services/formatting/formatting.ts:889:13)
      at /Users/blickly/repos/TypeScript/src/services/formatting/formatting.ts:791:17
      at visitNode (src/compiler/parser.ts:441:20)
      at forEachChildInSatisfiesExpression (src/compiler/parser.ts:793:16)
      at forEachChild (src/compiler/parser.ts:1251:43)
      at processNode (src/services/formatting/formatting.ts:788:9)
      at processChildNode (src/services/formatting/formatting.ts:889:13)
      at /Users/blickly/repos/TypeScript/src/services/formatting/formatting.ts:791:17
      at visitNode (src/compiler/parser.ts:441:20)
      at forEachChildInAsExpression (src/compiler/parser.ts:786:16)
      at forEachChild (src/compiler/parser.ts:1251:43)
      at processNode (src/services/formatting/formatting.ts:788:9)
      at formatSpanWorker (src/services/formatting/formatting.ts:521:9)
      at /Users/blickly/repos/TypeScript/src/services/formatting/formatting.ts:440:9
      at getFormattingScanner (src/services/formatting/formattingScanner.ts:69:17)
      at Object.formatNodeGivenIndentation (src/services/formatting/formatting.ts:439:12)
      at getFormattedTextOfNode (src/services/textChanges.ts:1342:36)
      at format (src/services/textChanges.ts:1313:37)
      at computeNewText (src/services/textChanges.ts:1316:15)
      at /Users/blickly/repos/TypeScript/src/services/textChanges.ts:1278:33
      at mapDefined (src/compiler/core.ts:518:28)
      at /Users/blickly/repos/TypeScript/src/services/textChanges.ts:1273:33
      at mapDefined (src/compiler/core.ts:518:28)
      at Object.getTextChangesFromChanges (src/services/textChanges.ts:1263:16)
      at _ChangeTracker.getChanges (src/services/textChanges.ts:1179:39)
      at withContext (src/services/codefixes/fixMissingTypeAnnotationOnExports.ts:254:36)

After debugging a bit, I suspect the issue is that the formatter seems to rely on Nodes having a valid parent pointer (such as here), which seem to be set to undefined in the replacement node passed to the ChangeTracker.
Is it safe to assume that the ChangeTracker / formatter in TS are designed to require valid parent pointers?

Judging by the location, this looks more like that the formatter didn't consider - to be a part of a name; it checks if it's a token (which I'm assuming is -), then only complains if that's in JsxText, but surely it can be an attribute too.


How can I contribute to the table of content extension?

I thought about build a toc extension, but then found here is one. Personally, I want to add a few tweaks to it, but don't know about the workflow working with building extensions for Ipython Notebook
Is there any instruction of it?
Addtionally, I find writing html inside js is intimidating, is it possible to extract it out?

(see also comments on #471)
There isn't really a build process for the majority of extensions, which are frontend-only (they are just javascript/css, and don't have server-side python extensions). They're basically just collections of static files installed in an appropriate location.
I'd say extracting html-writing out is a little trickier than writing it in an extension using jquery. I mainly write stuff in jquery as it looks nicer to me & is simpler to edit later. But, of course, that's all subjective.
For minimum js, you could write your html outside your javascript files, then copy it in as a js string (see, for example, the large block at nbextensions/usability/highlighter/highlighter.js#L209-L219)?
If you really wanted to include, say, an html file in your extension's main js file, you could make an AJAX request to grab it, but at some point you'll still have to use javascript to insert it into the DOM, and that, combined with the jquery AJAX, seems like more trouble than learning enough jquery to find/insert elements...

@jcb91 Thanks alot! I'm not sure if you have work with Ruby on Rails or PHP before, I just want something like .erb, something like:

  <%= title.each do |title| %>

<%= title.content %>

  <% end  %>

### Then you declare component's behavior below.

which I can use for loop to generate html etc. Writing it in all js is quite hard for me.

@cqcn1991 no worries. I see what you mean, it's always easier to work with what's familiar. The main problem is that RoR & PHP are both server-side technologies, while the notebook extensions are mainly limited to client-side scripting. Additionally, with something like erb, you'd need to write the whole page, no? It becomes complicated to insert that into the main notebook page, which is rendered by a python tornado server. Modifying the main tornado server would equally be complicated, and liable to break things, so I'd not consider it worthwhile. Additionally, you need to get hold of the headings somehow, and since these can change in the browser before they're saved on disk, essentially you need to use the notebook's javascript API to get the headings. I fear a little javascript may be unavoidable.
As for your example, this kind of thing is done in nbextensions/usability/toc/main.js#L27-L67. That example is mainly using individual jquery calls to do things like:

select elements: $('#toc-wrapper .hide-btn') the $ is a short name for jQuery, and the call uses a css-type specification to select all elements with the class 'hide-btn' with an ancestor that has id 'toc-wrapper'
set selected elements attributes or text: .attr('title', 'Show ToC') sets the selected element(s) title attribute(s) to 'Show ToC', while .text('[+]') sets the element's inner text.
You could use something like codepen or jsfiddle to mess around and learn a bit of jquery to make html elements and the like - see for example http://codepen.io/jcb91/pen/rxENBR for a pen ready set up with the correct jquery, bootstrap, css etc. The css tab has the toc css in it.

And, as with many things, the quickest way to get what you want form the existing toc/toc2 is probably to make a copy, and then fiddle with it!

I agree with @jcb91. I don't think there is an easy way to do it differently within a notebook.

Welcome @cqcn1991. I agree with @jcb91 and @juhasch. You should make a copy of current toc2, eg as mytoc, then edit the name in toc2.yaml; use the nbextensions tab to diable toc2, enable mytoc and then start playing with the code. The extension is reloaded each time  you reload the jupyter-notebook (just reload the page). You shall use the javascript console to look at what happens.

@jcb91 @juhasch @jfbercher Thanks for all your help. Didn't expect you guys are so helpful. I now has a copy to toc2 working, Hope I'll have something to share with you soon.

The notebook will only load main.js (or however you name your main file). You can load more js files using a require command. Take a look at other extensions how this is done.

Just a suggestion (for the future maybe): even without using server-side technology, you can still have templating to make it easier to maintain extensions that render relatively complex HTML code like the ToC. handlebars.js is a good example (has support for loops, conditions, etc.)
http://handlebarsjs.com/builtin_helpers.html

@halflings thanks alot for this. May try this for sometime. Someone also told me other template as well. Now I'm experimenting TOC with ReactJS, but now I'm having problem in loading the modules (I don't know require js beforehand).

Hi, @jcb91 @jcjaskula @jfbercher
Here is what I want to do with toc, to make it into sidebar (toggle), because I feel it is a missing feature of the Ipython Notebook itself. A quick look of what I've done so far:

Originally, I though about re-write the code first,using something like ReactJS maybe. However, it is far beyond my limit. So I thought about just starting with css, to show you guys what I want to do with toc, and later may find others to cooperate with me.

@cqcn1991 you seem to have more or less got it done already! Or is that just a photo mockup?

It looks nice!
Immediately some options come to mind: it would be great to have options to dock/undock (let it float as now) the toc and to dock either on the right or on the left side. Also it would be nice if the sidebar can be resized.

The usability/help_panel extension implements something similar, with a dockable, resizable, side panel, so you might look at the js & css for that for inspiration.

@jcb91 It's easy to get quick and dirty with css and jquery, but the code is simply unmaitainable(I simply delete some of the original functionality to make the code not that long).

@cqcn1991 I see what you mean. ToC2 in particular is a bit daunting, even compared to other extensions. I've got a branch cleaning it up a bit which I started to see how it worked, which might be easier to look at: toc2_cleanup

@jcb91 And it also bothers me that the extension all bundled together. I can see it benefit in putting all discussion together, but it also makes it hard to make PR, I think.

@cqcn1991 I don't quite understand. It's still quite possible to make a PR affecting only a single nbextension, if that's what bothers you? Or perhaps I've misunderstood?

@jcb91 Yes, it's possible. I just think if there is both seperation and combination would be better. Seperated repo would be easier for people to participate, combined repo would be easier for people to use.

closing as stale


Pagination: currentPage doesn't align with page

I stumbled across something rather annoying with the pagination plugin, perhaps I am misunderstanding something. Clarification would be appreciated.
I'm working with an API that uses limit and page for pagination, so I've set my pagination up as such:
protected function applyPagination(Request $request): Request
{
    $request->query()->add('page', $this->currentPage);

    if (isset($this->perPageLimit)) {
        $request->query()->add('limit', $this->perPageLimit);
    }

    return $request;
}

However, this means that my pagination will start at page 0 as currentPage is set to 0. Applying ->setStartPage() on the paginator doesn't do anything, neither does setting the currentPage property on my pagination class to 1.
Moving to the deprecated page property will make everything work as expected:
$request->query()->add('page', $this->page);

What's the idea for currentPage not starting at 1? Or how do you actually properly set the starting page to 1, without making use of the deprecated/internal property?

@jorqensen ,
The currentPage variable is used to track which page the paginator is currently on. When you start and haven't made any requests, the current page is 0 (or, startPage - 1, if you've set the start page). Once you request page 1, then the currentPage will advance to 1.
The applyPagination() method is called before requests to update the request to get the next page. Since you're trying to get the next page, and not the current page, you want to update the request with $this->currentPage + 1.
If you look at the applyPagination() method on the parent PagedPaginator class, you'll see it still uses the deprecated page property (which is equal to $this->currentPage + 1).
Since this property is deprecated, I tend to use $this->currentPage + 1 in my own custom paginators. Also, the $this->currentPage + 1 logic is used multiple times inside the parent Paginator class.

Hey @jorqensen
As Patrick kindly mentioned, the page property does start at 1, but that meant that by the time it ran applyPagination, that value was actually 2, so I deprecated it and introduced currentPage which is the "correct" value. Patrick's suggestion above should be suitable to get pagination working.

Don't know if it will help but I found today that rewinding the Paginator will help with the setStartPage();
$paginator = $myConnector->paginate(new MyRequest());

$paginator->setStartPage(15);
$paginator->rewind();

foreach ($paginator as $page) {
    // code
}

@craigpotter ,
You may want to test again to see what is going on. In your example, manually calling rewind() shouldn't have any effect, since the rewind() method is the first method that is automatically called by the foreach().
The paginator can be used in a foreach() because it implements the Iterator interface. You can see in the php docs the order that the iterator methods are called when it is used in a foreach(). The docs show the very first method call is to rewind(). The first iteration calls rewind() => valid() => current() => key()". Subsequent iterations call next() => valid() => current() => key(). The foreachstops whenvalid()returnsfalse`.

Thank you @patrickcarlohickman for the clear explanation and @Sammyjo20 for following up. Sorry I've been late to get back, I've been swarmed with stuff lately.
currentPage +1 does indeed fix my issue, why it had to be like this was a bit confusing and to some degree still is. Either way, no need to drag something on that isn't a bug. Thanks once again! 👌


[img2llm_vqa] LAVIS requires transformers>=4.28.0 but CLIP doesn't support transformers>=4.27

Hello team,
I am trying to run the demo of img2llm_vqa from: https://colab.research.google.com/github/salesforce/LAVIS/blob/main/projects/img2llm-vqa/img2llm_vqa.ipynb#scrollTo=7428ac2d
I encounter issues where LAVIS requires transformers>=4.28.0 but CLIP doesn't support transformers>=4.27
*Requirement already satisfied: transformers>=4.28.0 in /usr/local/lib/python3.10/dist-packages (from salesforce-lavis==1.0.1)
*Error message when trying to load_model_and_preprocess(name="img2prompt_vqa", model_type="base", is_eval=True, device=device): "BLIP models are not compatible with transformers>=4.27, run pip install transformers==4.25 to downgrade"
Is there a workaround or the dependencies will be fixed?
Thanks!
Mia

Yes, in the demo page, here is the code:
import sys
if 'google.colab' in sys.modules:
print('Running in Colab.')
!git clone https://github.com/salesforce/LAVIS
%cd LAVIS
!pip install .
!pip3 install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0.tar.gz

Thank you for your quick revert. Yes, here is the code i copied from the demo:
import sys
if 'google.colab' in sys.modules:
print('Running in Colab.')
!git clone https://github.com/salesforce/LAVIS
%cd LAVIS
!pip install .
!pip3 install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0.tar.gz

@kopyl Could you please help me solve it? Thank you!

@RookieXwc not sure, sorry :(

I have the same issue, Lavis requires version>4.28, but there are the following errors:
AssertionError: BLIP models are not compatible with transformers>=4.27, run pip install transformers==4.25 to downgrade

Did you solve the problem?


Make install command

Installation command that installs a given soc-module
Command: soc install

https://stackoverflow.com/questions/4604663/download-single-files-from-github


Remove all occurence of logix to circuitverse in controllers

Fixes #2528
Describe the changes you have made in this PR -

Remove all occurence of logix to circuitverse in controllers

Note: Please check Allow edits from maintainers. if you would like us to assist in the PR.

@tachyons Kindly Review, This is only for controllers folder.

CI seems failing

CI seems failing

@tachyons as you said to make PR separately.
I have change all occurrence locally.
I will push other folder's in different PR is that will be ok?


[feat]: Distributed Computing with PySpark

Write a program that performs a complex data transformation using PySpark on a distributed dataset. Optimize the transformation process for performance.

@Swapnil-Singh-99 assign me this issue for hacktoberfest

Complete two issue first

@Swapnil-Singh-99 i have completed my two issue please assign me this issue

@Swapnil-Singh-99 Please label it with hacktoberfest


Weirdly, Mobvious::Manager breaks rails send_file on rails

The middleware Mobvious::Manager breaks send_file on rails for some reason. I don't yet know why, but the line
    config.middleware.use Mobvious::Manager
breaks send_file in my app, and commenting it out fixes it.

Looks like there was heavy discussion on #2 but in the end no fix could be found? I just found Mobvious but if it still breaks send_file, I'd be unable to use it in my project.


Entities can't be upgraded in bulk

Is your feature request related to a problem? Please describe.
The DSpace 7 codebase has quite a lot of assumptions about entities if they are used.
Because of that, there are a few problems that can arise:

When migrating from an older repository, there is no existing entity information.
When a user creates a new collection, and neglects to create a template item to keep the relevant entity type on, items that are created don't have that relevant information -> And a suite of functionality wouldn't work as expected

https://wiki.lyrasis.org/display/DSDOC7x/Configurable+Entities#ConfigurableEntities-3.ConfigureCollectionsforeachEntitytype

If a collection should change from one entity type to another for whatever reason, there is no way to do that easily without mucking about in the database etc

Describe the solution you'd like
A script that allows the user to update full collections with the relevant entity information:

Get handle(s) + entity type to use (And optional ‘force’ option)
Loop over the provided handles, and check the type (item or collection for example)

Item -> Process as describe later on
Collection -> Process all items + set entity type on template item (If it doesn’t exist -> Refrain from overwriting, without the ‘force’ option)

Process item -> Update entity type (If it doesn’t exist -> Only allow ‘change’ with force option)

Allowing the admins to do this, with the proper documentation will greatly improve the usage of entities in the DSpace codebase

@jonas-atmire : Thanks for creating this ticket.  I've flagged this as needing more discussion, as I think the migrating regular items into entities (e.g. when upgrading from DSpace 6 and wanting to enable entities) is potentially more complex than it may seem.  The simple scenario is, as you laid out, the Items can be processed and assigned a particular entity type.
However, there are more complex scenarios where in DSpace 6, some sites used Communities/Collections to represent a Journal hierarchy (e.g. Journal (community) -> Journal Volume (subcommunity) -> Journal Issue (collection) -> Articles (items)).  This complex scenario would require changing the type of object altogether (from Community -> Entity or Collection -> Entity).
It might also be possible to go with a simple solution initially, and add complexity later on... But, I wanted to point out that there are several scenarios to consider here & this might require more discussion.  For that reason, I'm moving this to the 7.5 board, even though we could begin discussion of this earlier if anyone wants to do so.

WORKAROUND:
It is possible to do basic "bulk" migration of Untyped Items -> Entities simply by adding the dspace.entity.type metadata field on the Untyped Item.  This field defines the Entity Type, so its value MUST match an EntityType value defined in relationship-types.xml (e.g. Publication, Person, Journal, etc).  This could be done in bulk using Batch Metadata Editing by editing many Untyped Items at once.
DSpace determines if an object is an entity based on the value of this dspace.entity.type metadata field.  So, adding dspace.entity.type=Publication to an Untyped Item will turn that Item into a Publication Entity.  Keep in mind though that you may wish to add addition metadata fields for specific Entity Types (see for example the person.* , organization.* metadata schema, etc).


Fix MATLAB highlighting in raw

Description
raw fails to properly tokenize/color MATLAB code when single quotes are used (as when transposing an array):

Reproduction URL
No response
Operating system
Linux
Typst version

[X] I am using the latest version of Typst

Blocked by a missing Syntect update #771.

Syntect updated landed.


Third-party websocket client

I would love to use rustpad for my hardware live coding project.
Is it possible to connect a third-party client via WebSocket to rustpad?
If you can point me to any examples or resources it would be great.
Thank you.

I was able to connect a client to this address and get WebSocket updates.
wss://rustpad.io/api/socket/#####
this is what I get at first connection
{
"id": 0,
"operation": [
"p"
]
},
{
"id": 0,
"operation": [
1,
"rin"
]
},
{
"id": 0,
"operation": [
4,
"t"
]
},
Is there a way to get the full text file in a single request?

Yep, that's right. The protocol is documented and specified in the backend code at rustpad-server/src/rustpad.rs. See the ClientMsg and ServerMsg data types, respectively. These are serialized/deserialized to JSON.
If you want to get the full text file, you can send an HTTP GET request to /api/text/[id].

If you want to build a separate client using this WebSocket server implementation, you will need to establish a WebSocket connection to /api/socket/[id], then mimic the behavior of the web client.

Whenever the user makes a change to the document, you should represent that change by an OperationSeq and send it in a Edit message to the server, over WebSocket.
While that's being sent, buffer all remaining changes, until acknowledgement from the server is received.
Whenever a remote change is received from the server, run operational transformation on it and apply it to your textarea. Transform any buffered or pending changes.
(Optionally, support messages like editor language changes, user presence (entering/leaving), cursor positions, etc.)

Most of the client-side logic for this in the Rustpad's Monaco editor implementation can be found in src/rustpad.ts.

Perfect!
One last question, Have you looked into making a portable executable version of rustpad?
Thank you.

No, unfortunately not. I don't have the experience or interest in compiling executables for different platforms, then distributing them.

Fair enough. Thank you for all the help.


Create initial table schema

Maybe this is already done,
https://eclass.srv.ualberta.ca/pluginfile.php/1931129/mod_assign/intro/setup_391w2015.sql


Mark data portion as code

BinaryNinja fails to recognize some portion of the code from the a function (i.e. main) as code, as result the disassembly of the function is incomplete. Would be helpful the ability to mark a segment as code which in turn could be coalesced with the function which contains (or precede ) the marked segment.

The binary file is the following and the function is the main.
no_flo_f51e2f24345e094cd2080b7b690f69fb.bin.tar.gz

A bit late to the party -- for this particular binary, the actual error is the function sub_4006c6 is wrongly considered a no-return. Manually setting it to can-return will fix the problem. Also, this has been fixed in recent versions and binja knows the function can return


Seems like about half of this documentation is missing.

Starts off by explaining the Cancel And Help Dialog.
Talks about how the MainDialog works
Then discusses Handling Errors
Then Says to tests by "send messages as shown below"
Then Ends
Where \ How does the CancelAndHelpDialog tie in?.
Theres nothing below the line that says
"Start the emulator, connect to your bot, and send messages as shown below."

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 9ef4ea5a-1364-5432-dcbb-b39b7145028a
Version Independent ID: f4b4a848-3ce4-7978-a72d-2c3952a3ab1b
Content: Handle user interruptions - Bot Service - Bot Service
Content Source: articles/v4sdk/bot-builder-howto-handle-user-interrupt.md
Service: bot-service
GitHub Login: @ivorb
Microsoft Alias: kamrani

Case anyone else comes across this and misses how this all ties in together. The explanation here assumes that BookingDialog isa CancelAndHelpDialog.

I'll post an update to the article, but probably won't be able to get to it till next week.

Updating the statement about the `` class to read:
We begin by implementing the CancelAndHelpDialog class to handle user interruptions. The cancellable dialogs, BookingDialog and DateResolverDialog derive from this class.


Fix for dpex failure caused by addition of nin, nout and types

[x] Have you provided a meaningful PR description?

Fix for dpnp ufunc db creation caused by addition of nin, nout and types to dpnp math functions in latest version of dpnp.

[ ] Have you added a test, reproducer or referred to an issue with a reproducer?
[x] Have you tested your changes locally for CPU and GPU devices?
[x] Have you made sure that new changes do not introduce compiler warnings?
[ ] If this PR is a work in progress, are you filing the PR as a draft?

coverage: 87.065% (-0.2%) from 87.215%
when pulling c7933136bb7ff77c6605e567b2086ea456e5f2c0 on fix/dpnp_nin_issue
into 1336f7620bf826c8f4eb4ce15b5578a451aa19c9 on main.


Can write Navigation Property only in one Entity in 1 to * Relationship.

Hello, first THANK YOU VERY MUCH, we are migrating our backend from Net 4.8 to Net 6. And therefore EntityFramework.
We currently work with Database First and many .edmx with our own t4 that generates our entities and DbContext. After the migration we should try to move to a Model First approach.
So your library is of great help, generating the json to use scafolding and thus being able to generate the models and entities according to each edmx.
The problem I find is in a 1 to * relationship, for example an Email can have 0 or many Attachments. In our model we have the Email entity with a property that is a collection of Atachment, and in Atachment only the EmailId property not the Email navigation property.
The Json that your tool generates for us looks correct, it only includes the navigation property on the Email side. And in the Atachment entity no.
{           "Name": "Email",           "NewName": "Email",           "IncludeUnknownColumns": false,           "Properties": [             {               "Name": "OrganizationId"             },             {               "Name": "Id"             },             {               "Name": "From"             },             {               "Name": "To"             },             {               "Name": "Cc"             },             {               "Name": "Bcc"             },             {               "Name": "Subject"             },             {               "Name": "IsHtml"             },             {               "Name": "Body"             },             {               "Name": "DateAdded"             },             {               "Name": "ShipDate"             },             {               "Name": "RetryCount"             },             {               "Name": "ErrorMessage"             },             {               "Name": "CreateUserId"             },             {               "Name": "ExpirationDate"             },             {               "Name": "EmailImportanceId"             },             {               "Name": "EmailPriorityId"             },             {               "Name": "EmailStateId"             },             {               "Name": "SourceTransactionTypeId"             },             {               "Name": "SourceTransactionId"             },             {               "Name": "SourceTransactionNumber"             },             {               "Name": "Attachments"             },             {               "Name": "Timestamp"             }           ],           "Navigations": [             {               "Name": null,               "NewName": "EmailAttachments",               "FkName": "FK_EmailAttachment_EmailId",               "ToEntity": "EmailAttachment",               "IsPrincipal": true,               "Multiplicity": "*"             }           ]         },
{           "Name": "EmailAttachment",           "NewName": "EmailAttachment",           "IncludeUnknownColumns": false,           "Properties": [             {               "Name": "Id"             },             {               "Name": "EmailId"             },             {               "Name": "DownloadKey"             },             {               "Name": "OrganizationId"             },             {               "Name": "Timestamp"             }           ]         },
But when using Scafolding it adds the navigation property to the Attachment entity. And in the DbContext you configure the relationship there..
In Email
public virtual ICollection<EmailAttachment> EmailAttachments { get; set; }
In EmailAtachment
public virtual Email Email { get; set; } = null!;
In Context
`modelBuilder.Entity<EmailAttachment>(entity =>
{
entity.ToTable("EmailAttachment");
            entity.HasIndex(e => e.EmailId, "IX01_EmailAttachment");

            entity.Property(e => e.Timestamp)
                .IsRowVersion()
                .IsConcurrencyToken();

            entity.HasOne(d => d.Email)
                .WithMany(p => p.EmailAttachments)
                .HasForeignKey(d => d.EmailId)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK_EmailAttachment_EmailId");
        });`

How can I prevent the navigation property from being added to EmailAtachment and so that in the context the relationship is configured in the Email entity as follows?
entity                 .HasMany\<EmailAttachment\>(e => e.EmailAttachments)                 .WithOne()                 .HasForeignKey(e => e.EmailId)                 .HasConstraintName("FK_EmailAttachment_EmailId");
Sorry for the length, and thank you very much in advance for any help.

EFCore requires that both ends of a relation are represented in the model for the scaffolding process.
And EFR does not provide any features for hiding a single end.
However you should be able to work around it if you have to.
One simple way could be to set the Comment on the nav you want to hide to the text "Hide".
In json you can add this property:
"Annotations": {
  "Relational:Comment": "Hide"
}

You should know that all annotations added in json can be accessed within the t4 while code is generating.
You can then omit the property from code by placing this in the t4 within the property loop:
var comment = property.GetComment();
if (comment == "Hide") continue;

This will get you most of the way there.  The entity configuration likely makes reference to the omitted property, so you will have to ammend the entity configuration by creating a partial DbContext class and implementing the partial method "OnModelCreatingPartial".    If you're doing entity config splitting, this will be called "OnConfigurePartial".
Let me know how you make out.

Thank you very much for responding, I will then try to customize the t4 file.
What is not clear to me is where in the Json I added that Annotation.
Is there a page or wiki with the properties, customizations or annotations that can be made to the Json?

Within the tag for the target property.
Alternatively, in VS install the Entity Framework Ruler extension (https://marketplace.visualstudio.com/items?itemName=Randell.EF-Ruler), and use the UI editor available when you right click on the json file.


feat: VRF support

Hi guys,
Apologies that this took so long, but I was doing a bunch other things, but here I am committing the code that Marques fixed up along with some other functions, delete and list, I hope this is an alright starting point for whoever works on this next.

Hi, @irusoeqx! Thanks for following up on #271.
It looks like a portion of the PR is missing compared to https://github.com/equinix/metal-cli/compare/main...displague:metal-cli:irusoeqx/main?diff=unified
You can also see there are a number of linter and compile time errors highlighted in the file view:
https://github.com/equinix/metal-cli/pull/358/files
Try running the code and each action that has been added before pushing the next update, from the project root:
$ go run ./cmd/metal vrf help
$ go run ./cmd/metal vrf create --the-required-args
$ go run ./cmd/metal vrf list --the-required-args
$ go run ./cmd/metal vrf delete --the-required-args

Hey @irusoeqx I rebased and ran the e2e tests for the current version of your PR, but it looks like the tests are still failing with various issues.

@irusoeqx This PR https://github.com/equinix/metal-cli/pull/377 aims to add the same support. Please feel free to further contribute or close the PR in the favor of other

This PR became the basis for #377. Closing.


Fix minor issues

Coverage remained the same at 99.497% when pulling fe3da47ee9a429a59ad83de229492db87617f9d0 on lqez:minor/fix-typo into 8bfd5c8f77800c3257b70f16969a7fe2ad8f01bc on what-studio:master.


hacktoberfest intro

introducing hacktoberfest & how to contribute to hacktoberfest on this repo

done. thanks for contributing.


Remove dependency on gorilla context

Do you think it's time to remove dependency on gorilla context?
Even the authors of gorilla context suggest it's time to either use it OR use the standard library context, BUT not both since they interfere with each other: http://www.gorillatoolkit.org/pkg/context
Given that the rest of the Go community is starting to use std lib context, it's making it difficult to move on for me because I rely on this library which uses gorilla context.

Agreed we should switch to std lib.  Not sure when I'll have time to do it - but a PR would be welcome.


kata-runtime commands question

Description of problem
kata-runtime include kata-network\state  to manage container.
But containerd-shim-kata-v2 did not provide these commands.
I using containerd-shim-kata-v2 to create container, then how to check container state and network info like "kata-runtime state" "kata-runtime kata-network" .
Expected result
Can check container info like kata-runtime commands
Actual result
I did not find commands to check container info

@AdamPioneer I think you can use the kata-runtime to get container's info
cc @lifupan

@devimc
Thanks for your info, but unfortunately, kata-runtime will fail，the logs are as follows:
Container ID (xxxxxxx"ID") does not exist
I check the shim v2 code, v2 create sandbox and container using builtin,
it did not create sandbox and container id mapping to /var/run/kata-containers/containers-mapping/,
then using kata-runtime state command to check container info will fail.
@lifupan do you have any suggestions?
in addition, why using builtin mode to create container ?
containerd-shim-v2/create.go:
sandbox, _, err := katautils.CreateSandbox(s.ctx, vci, *ociSpec, *s.config, rootFs, r.ID, bundlePath, "", disableOutput, false, true)
_, err = katautils.CreateContainer(ctx, vci, s.sandbox, *ociSpec, rootFs, r.ID, bundlePath, "", disableOutput, true)
cli/oci.go:
func getExistingContainerInfo(ctx context.Context, containerID string) (vc.ContainerStatus, string, error) {
cStatus, sandboxID, err := getContainerInfo(ctx, containerID)
if err != nil {
return vc.ContainerStatus{}, "", err
}
// container ID MUST exist.
if cStatus.ID == "" {
	return vc.ContainerStatus{}, "", fmt.Errorf("Container ID (%v) does not exist", containerID)
}

return cStatus, sandboxID, nil

}

Hi @AdamPioneer
Since the containerd-shim-kata-v2 used the containerd's shimv2 api, which was different from kata-runtime commandline which was used the containerd shimv1 api. The big deference is that for shimv1, there is no daemon process running to manage the kata containers, and once the container created successfully, the kata-runtime process will exit; but for kata shimv2, there is a daemon process(containerd-shim-kata-v2) which will manage the kata containers, that's why it doesn't need to create the ID mapping and using builtin.
I don't know how do you run the kata shimv2, using k8s or just using crictl-tools?  Anyway, you can use crictl-tools cmd crictl to get the specific container info, such as:
$sudo crictl info
or
$sudo crictl inspect

@lifupan thanks
I using k8s to run the kata shimv2.
in fact,  i want to use kata-runtime kata-network command.
Does shimv2（crictl） have alternative command?

For k8s, since the network is managed by cni plugin, and you 'd better not to
do any operations on kata network by kata-network command, otherwise, it would
mangle the network.
So what's you usecase here?

Does shimv2（crictl） have alternative command?

For shimv2, we depend on cni plugin to manage the network, thus we hasn't afford any other command.

@lifupan  thanks!
I use as follow command to check network interface.
kata-runtime kata-network list-ifaces "Container ID"
thanks for your info.


Syntax incorrect

All examples showing Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows NT\CurrentVersion are incorrect they must be corrected to Get-ItemProperty -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion" without "" the commands do not work due to the empty space added to the path by -  Windows NT

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: dd87c102-6f5d-376b-4665-98ff94b4ca41
Version Independent ID: f6140fb6-30bc-e9e7-463a-bf5bfc926165
Content: Servicing Channels
Content Source: WindowsServerDocs/get-started-19/servicing-channels-19.md
Product: windows-server
Technology: server-general
GitHub Login: @JasonGerend
Microsoft Alias: jgerend

Thank you, well spotted. Good point. I will open a PR to have that fixed.

There you go. Thank you for pointing out the unparsable command parameters.


Crash on not latin charasters in Event

When set caller name in utf-8, event receipt in ascii and crush on JSON.parse
Need to read socket in utf8 encoding

@gendalf do you set the caller-name using Node.js or some other method (e.g. XML dialplan)? Just trying to reproduce the issue. (When sending UTF-8 in event headers from Node.js, I get %-encoded responses, which produces garbage once they go through the module, but doesn't crash the parser.)
Also I'm going to have to make sure that using .setEncoding('utf8') on the socket doesn't change things in unexpected ways, I'll feel more comfortable after I write a few tests to get a better handle on this. :)

I am set caller name in nodejs
#call.api "uuid_setvar_multi #{uuid} person_id='#{person_id}';ringback='%(2000,4000,440.0,480.0)';instant_ringback=true;ignore_early_media=true;effective_caller_id_name='#{person_name}'"
person_name = "Толя Кротик"  // cyrillic
When getting event in ascii (by default), body have json with ".... "variable_caller_id_name":"PP2P0QP5P=P: P>P.QP8P9P!P5QP3P5P5P2P8QP"P>P;Q PQP>QP8P:",...
'P"P>'  - ops... error
when setEncoding('utf8') - all fine inside message, but FS send Content-Length in bytes, not in utf8 chars...  so body parsing wrong when try get body with substring...

Thank you for the great report @gendalf ! Please test v4.1.0 and let me know if things are better!

Now it works fine! Great job @shimaore !


Infer config options from existing files

When generating a new field-guide, the default config for name, copyright, and github could all be inferred from existing files in the project. For example, the default name can be read from the name property in package.json, the github property can come from repository in package.json, and copyright could be pulled from COPYRIGHT.md. Instead of providing defaults we know will have to be changed, we could proactively provide intelligent defaults that may not need changing!

That's a great idea 🎉
The right place to implement this is in the blueprint index: https://github.com/empress/field-guide/blob/master/blueprints/field-guide/index.js#L43
I think it would be worthwhile just assuming that the files you're talking are available in process.cwd() but we should fall back sensibly if they are missing for some reason i.e. if the smart behaviour fails for whatever reason we have the same functionality as today 👍


docker file app is not working properly

when we do a git push deis master the builder is just hanging after this log message
'{"status":"Pushing","progressDetail":{"current":2240145,"total":2240145},"progress":"[==================================================\u003e]  2.24 MB/2.24 MB","id":"cbc72f123e08"}
{"status":"Image successfully pushed","progressDetail":{},"id":"cbc72f123e08"}
remote: ":"git-682479d6: digest: sha256:8734d9fcfd48459f7a128627da11028707520361cabe53222ab710533908ebcc size: 8019"}
size of streamed logs 19868
Waiting for the deis/dockerbuild-peachy-undertow-682479d6-0cec13d8 pod to end. Checking every 100ms for 15m0s
Done
Checking for builder pod exit code'

fixed in #237


Italian

WOOOOT! THANK YOU SO MUCH @nicola ❤👏🏽👏🏽👏🏽

wowowow

Hey @nicola, got account at https://www.transifex.com/ipfs/public/ ?


Add Progress Bar to Factory Production UI

This is a lower priority but will help users to quickly visualize where a factory is at in terms of its current production whenever they bring up the Factory Production UI.

This should be a simple modification of the FactoryProduction window.

In addition, I was thinking we should probably have a ProgressBar class derived from Control, rather than just a standalone method to draw progress bars given all the individual values.
It shouldn't be very difficult to convert the freestanding method to the update method of a new Control derived class. Though it might be wise to use integer values for the current progress value and the max progress value. Most cases where the progress bar are used have natural int inputs, so conversion to float is typically unnecessary.

Generally agreed. The stand alone functions were a quick and dirty type of deal which continue to be useful after implementation. :/

I tried to wrap my head around what was being discussed here, but I reckon it's about this UI Window:
Empty:

Item selected:

The Metal/Mineral values are the result of multiplying the number of turns and the amound of each mineral/metal they consume each turn.
This is to become graphical, like for example the MineReport (which has both a small and a big version):

I reckon the general layout of the top 4 progress bars would be fitting for the tooltip, as the text is layed out the same way there.
I suppose the standalone functions that are being referred to is one in Common, called drawBasicProgressBar:
void drawBasicProgressBar(int x, int y, int width, int height, float percent, int padding)
{
	auto& renderer = Utility<Renderer>::get();
	renderer.drawBox(NAS2D::Rectangle{x, y, width, height}, NAS2D::Color{0, 185, 0});

	if (percent > 0.0f)
	{
		int bar_width = static_cast<int>(static_cast<float>(width - (padding + padding)) * percent);
		renderer.drawBoxFilled(NAS2D::Rectangle{x + padding, y + padding + 1, bar_width - 1, height - (padding + padding) - 1}, NAS2D::Color{0, 100, 0});
	}
}

Ideally, this is to be promoted to its own Control derived ProgressBar.
As a starting point, to see what an actually visible Control derived class looks like, I was looking at Label. But that derives from TextControl, so might not be the best suited, although its readonly nature does lend some inspiration I think, but rather than drawing text, you'd be drawing the progress bar. And as ProgressBar doesn't have any textual properties, it can probably just derive from Control.
I hope I got the gist of it. I'm very new to all of it, but this gives some dots to connect things to.

I tried something, but as it's all rather new to me, it's probably wise to wait for some feedback:
https://github.com/OutpostUniverse/OPHD/compare/master...belgianguy:AddProgressBarControl

Eventually I would place it where now the text "x of y turns completed" resides.

I think you've got the gist of converting the progress bar code to a new Control derived class. That alone could be its own PR.
I'm less certain about which UI Leeor was looking to update. My initial thought was something involving the Factory Reports view, though you did indeed find a window with the exact title of "Factory Production".
I think the UI update could be done as a second PR. You could potentially develop both in parallel though, as a way of testing the new Control derived class. I would probably try to commit and push the changes separately though. Keeps the review chunks smaller, and makes it less likely that code will be hung up during review due to changes.

I took a quick peek at the code you linked. Looks like the code has the right basic idea.
The NAS2D library has a Vector type, which can be used for Control size values. Additionally, the Control area is typically stored at the mRect field. A Point and Vector can be used to set a Rectangle object's position and size. You probably don't need to store explicit mWidth and mHeight fields in derived classes, as the mRect field in the base Control class should be able to represent those values. That may also simplify some of the draw calls, as you can pass the already constructed mRect value, rather than trying to reconstruct a new Rectangle object.
I think I would consider having a maximum value set in the ProgressBar constructor, and then be able to set the current value. Let the control take care of things like "percentage" calculation. Though internally it probably wouldn't use percent. Instead you could do things like:
const auto barWidth = mRect.width() * mValue / mMaxValue;

The ProgressBar control has a border, and an inner draw area. The mRect value will probably represent the outer border bounds. You can use Rectangle::inset with the border thickness on mRect to convert to the inner draw area.

You've got the general idea, and yes, that was the UI window I was thinking of here.
I like Dan's idea of having the ProgressBar control taking a 'max count' type of value and then setting said value. It would do the 'percentages' on its own and sort of abstract that away from the user. As I mentioned in a previous comment, the drawBasicProgressBar() function was a 'quick and dirty' solution to just get something working. I really should have just spent the time making it a proper GUI Control but now's as good a time as any to start!
As for being new to the code base... yeah, I get that. I know what it's like exploring a body of work you've never seen before. NAS2D is the middleware that OutpostHD is built on -- they're both my projects but NAS2D has had considerable progress made with Dan and Brett's help (and also a user cugone but they've moved on to other projects).
Anyway, by all means ask away whenever there are questions. If you use Discord you can message me directly as well. Based on your username I assume we're on opposite sides of the planet so there may be some delay but I'm usually pretty responsive.

First suggestion, you can remove the header text:
// ==================================================================================
// = NAS2D+GUI
// = Copyright © 2008 - 2020, Leeor Dicker
// ==================================================================================
// = This file is part of the NAS2D+GUI library.
// ==================================================================================

It's old and doesn't really add any value. It's also not actually part of the NAS2D library anymore. Not yet anyway! :D I've been meaning to get around to removing that from all of the UI controls.

Hi, Leeor and Dan, thanks for the guidance so far, I'm still working on my current branch, but once I have a more stable understanding I'll extract the ProgressBar control to its own branch and that will be in the lead. I just find it hard to develop the control without also checking that it fits it purpose and looks the part.
So far:

The NAS2D comment has been removed
The mWidth and mHeight members were removed and instead the mRect.width and mRect.height member variables are now used.
Yes I reside in the country that is in my username
I don't yet understand the maxValue approach, currenly this value gets set when the FactoryProduction constructor is called.
E.g. we know for example that a Truck takes 3 turns and a Dozer/Miner/Digger takes 5 turns to complete. How would we express that in relation to the maximum? Would we need to use the maxValue in the mValue calculation? Is a guard needed to prevent mValue from exceeding mMaxValue?
I still need to investigate what the usage of Rectange::inset is.

The maxValue will depend on what the progress bar represents. If it represents turns to completion, and a truck takes 3 turns, then maxValue will be 3, while the value will be incremented by 1 each turn. If a robot takes 5 turns to complete the maxValue will be 5. It would make sense to default the initial value to 0 in these cases. That's probably a sensible default in general. I don't know if need to provide an option to set value as a constructor parameter, though I'm open to allowing that.
The Rectangle::inset method adjusts corner points inwards by a certain amount. It can be used to adjust a border area to an inner contained area, given the borderThickness:
Rectangle borderRect{0, 0, 10, 20};
Rectangle innerArea{borderThickness, borderThickness, 10 - borderThickness * 2, 20 - borderThickness * 2};

ASSERT_EQ(borderRect.inset(borderThickness), innerArea);

Hi Dan, the ProgressBar constructor is currently called when there is no concept yet of the product that is being built, so the maxValue (e.g.: 3 or 5) is not known at the point of creation. So for my current setup I'm scratching my head, or I am still missing something? Should there perhaps also be a setMaxValue setter that must be called whenever another product is selected from the grid (none vs miner vs truck)?
Current constructor:
ProgressBar::ProgressBar(int value, int maxValue, int padding)
{
	mValue = value;
	mMaxValue = maxValue;
	mPadding = padding;
}

private member in FactoryProduction
ProgressBar prbProduction{0, 5, 1};

It would be reasonable to allow changing the maxValue with a setter. Just keep in mind that maxValue should probably never be 0, so as to avoid division by 0 problems. You may also need to re-clamp the value if maxValue changes.
Not sure if setting 0 for maxValue should result in an immediate exception, or if the progress should just silently accept this and avoid division in that case, perhaps by forcing it to display as either 0% or 100%. I think I'm leaning towards immediate exception, as that would more likely allow programmer mistakes to be caught early.

If changing the selected item changes the maxValue, you could potentially re-construct the ProgressBar object and assign it over top of the old one. That would be one way to update the maxValue without needing a setter. I find this pattern useful when changing one aspect of an object requires changing most other aspects. Here's the main properties are maxValue, value, and the border thickness. If you changed maxValue, you would likely also be changing value along with it.
prbProduction = ProgressBar{0, selection.turnsToCompletion, 1};

Thanks for that Dan, I also start to realize that a progress bar only makes sense as soon as a product is being built.
As a factory is created, it is not producing anything, so the first time the user opens the FactoryProduction window, there is no product being built, and there is no concept of max turns needed, thus there cannot and should not be any progress bar. So that means a progress bar can only be shown as soon as the user has selected a first item to produce. Meaning that the existance and visibility of the progress bar is dependent on the state of the Factory, here, having a product selected for production.
However, it in unclear to me if there ever then comes a scenario again in which the progressbar must be hidden again.
From a user experience point of view, it was not immediately clear what the function of the "Clear selection", "Apply", "Okay" and "Cancel" buttons all do. So it's also unclear what their effect on the progress bar (if any) should be.

Resetting the product will lose any resources spent on the previous product. It's a sort of a punishment for mismanagement to the user.
When the user switches it should reset everything back to 0.

Feedback about the interface is helpful. Clear Selection means pretty much that, set the factory to produce nothing. Apply applies any changes made without closing the window and Okay applies changes and closes the window. Admittedly this could be better so your thoughts on a better arrangement or better verbiage is helpful.

@ldicker83, I have found the factory production UI confusing as well. It was helpful to read the description you just made of the buttons. Glad to hear it is getting addressed.

Yeah, come to think of it, usage is not super clear to me either, particularly before reading that description.
I think what adds to the confusion is you can select a new product while an old one is being built. That leads to confusion over whether the progress display is for an old item, which isn't indicated anywhere what it is, versus a new item. Maybe the selection list could be hidden or locked while an item is being produced? You would need to cancel or complete the item before it is unlocked.
I'm not particularly fond of apply and cancel buttons. I figure buttons should have immediate effect. Particularly with my suggestion about locking the build selection while the factory is producing. I would expect buttons for either "Cancel Build" if one was in progress, or an unlocked selection list, and after selecting an item, a "Start Build" button would be enabled. Once a build is started, the progress bar would then display.
Alternatively,  you could have a split display where there is a selection, with stats about the selected item, and a build area, with stats about the item being built. The two need not coincide. I'm somewhat less fond of this approach though, as it presents more data on screen at once, and so more chance to confuse the user.

All good feedback.
That window is really kind of a hold-over from early development. It hasn't changed at all in literally years. It may make sense to redesign it from the ground up since it was essentially a quick and dirty "Let's get this working" kind of effort.

Okay, so we're diverging a bit here:

I'll add the ProgressBar.h and ProgressBar.cpp files to their own branch.

Some other things I found out about the factory:

The resetting of turns still must be added when changing selection to another product. This is the punishment if I understand correctly.
The grid selection change event is also fired if your current selected item is the already selected item. E.g. you are producing Truck and you select Truck again. This should be caught and do nothing, as that is the already selected product.
When selecting another product to produce but the turns completed is larger than zero, it's perhaps nice to alert the user that he/she will waste resources when doing so. Is resetting the turns enough punishment for the user, and is that logically sound for the game state or does the production of the previous item explicitly be canceled?
Selecting "No" at the above prompt did present another UI debacle, the selection would still change in the icon grid, even though the operation was canceled. I suggest we here also make sure the icongrid re-selects whatever it was producing before, as the user signalled that he/she changed his/her mind.
Is there a "disabled" icon grid layout? e.g. "greyed out" icon grid and a "Forbidden" sign as cursor when in the icon grid, and unhooking all of its callbacks?
Is there a NAS2D equivalent of a table structure similar to the one in HTML? It could allow for layouts that are nicely aligned without drawing them ourselves. Or is there another UI Control that can achieve this?

Doodling around:

@belgianguy, There is a StringTable that will allow laying out 2D grids of text. We have discussed expanding this to a more generic layout structure that could accept arbitrary UI elements, but I don't think it it has happened yet. There is also an IconGrid in OPHD, but I am less familiar with it although it sounds like you are already familiar with it.
For StringTable, see: https://github.com/OutpostUniverse/OPHD/blob/e8323144561889f63668ef5f5448a33f76eead60/OPHD/UI/StringTable.h

Hi @Brett208, the StringTable construction is exactly the one I'm trying to expand/replace. As I created the ProgressBar, I was looking on how I would add it to the right of the "Turns Completed:" text, but found no matching UI Component just yet.
Thus a Table construct that can manage child Controls does not yet exist. :) I'll need to dig a little deeper I guess. Perhaps I can have a look if I can perhaps create something usable based on StringTable.

The grid selection change event is also fired if your current selected item is the already selected item. E.g. you are producing Truck and you select Truck again. This should be caught and do nothing, as that is the already selected product.

This is a good point. This should be a separate change set in the IconGrid control

When selecting another product to produce but the turns completed is larger than zero, it's perhaps nice to alert the user that he/she will waste resources when doing so. Is resetting the turns enough punishment for the user, and is that logically sound for the game state or does the production of the previous item explicitly be canceled?

I tend to dislike message boxes unless they're really used judiciously. Something like this, perhaps it makes sense to have that message box? I'll rely on the opinions of others to be sure.

Selecting "No" at the above prompt did present another UI debacle, the selection would still change in the icon grid, even though the operation was canceled. I suggest we here also make sure the icongrid re-selects whatever it was producing before, as the user signalled that he/she changed his/her mind.

I would make this part of the change set I mentioned above. This sounds like unintended behavior.

Is there a "disabled" icon grid layout? e.g. "greyed out" icon grid and a "Forbidden" sign as cursor when in the icon grid, and unhooking all of its callbacks?

There's a 'red' option -- see how it's handled with the structure icon grid on the main map view. If this isn't the behavior you're looking for that's definitely a feature that can be added. IconGrid, as it stands right now, is kind of a quick-and-dirty hacked together job that basically does the job but is anything but elegant. It could use some attention.

Is there a NAS2D equivalent of a table structure similar to the one in HTML? It could allow for layouts that are nicely aligned without drawing them ourselves. Or is there another UI Control that can achieve this?

I think @Brett208 mentioned the StringTable class which may be what you're looking for. I haven't done much with layout engines for the GUI... it's something @DanRStevens has been beating me over the head about and, while he's right, I find it tedious and have been dragging my feet on it. :/

Is the assumption correct that a product can only be changed when it is at 0 turns without penalty? Or are there other situations that would also allow this without penalty?

That's kind of what I was going for but I also want to have a 'notification' for when factories finish their production. Instead of every factory pushing a notification it would just be something like "One or more factories have completed their production cycle." with a button or link or something to pull up the full-screen UI to the factory tab. Something along those lines. I'm very open to suggestion, though, on how any of this can or should be handled.

This is a good point. This should be a separate change set in the IconGrid control as firing off that event doesn't really make too much sense. Granted the Win32 API does fire events like that for Combo Boxes even if you select the same item which is probably why I didn't account for this case but it seems to me that this is something that should really be handled by the control itself.

This is addressed in #821

I tend to dislike message boxes unless they're really used judiciously. Something like this, perhaps it makes sense to have that message box? I'll rely on the opinions of others to be sure.

I too don't like MessageBoxes and will only use them if nothing else can be used. I've seen one occasion where it really startled me, and that is when trying to build a "red" building. Maybe we can replace that?
1.) I don't know what everything costs, so I'm not inclined to try and build them, only to then realize that it will cause a popup. Can we here not use some sort of audio to signal that this is an impossible action? Some negative beep, or a EVA voice that says "Insufficient resources"?
2.) Would it not make more sense to add tooltips to the buildings in the IconGrid, which then could tell you what resources it will cost you (4x icon + text + number), and perhaps print in red those those resources that you are lacking when a building cannot be built?
3.) Why red? Isn't the "greyed out" the more known UI paradigm to signal that something is not available right now?
4.) Why is the Recycling Facility never red?
5.) When building something in a factory, but having no place to put it (no free slots and no warehouse) can we print the IDLE_REASON somewhere in the factory production window? Perhaps add a yellow footer with an triangle with an exclamation sign in the footer as to why this building is not producing? I picked yellow as red on dark grey is not as visible.

These are all very good points. I particularly like the idea of using sound to highlight constraints due to resource shortages. And that combines well with tooltips and highlighted text in case sound is disabled (or the user is deaf).

1.) I don't know what everything costs, so I'm not inclined to try and build them, only to then realize that it will cause a popup. Can we here not use some sort of audio to signal that this is an impossible action? Some negative beep, or a EVA voice that says "Insufficient resources"?

This was a holdover until proper tooltips could be implemented.

2.) Would it not make more sense to add tooltips to the buildings in the IconGrid, which then could tell you what resources it will cost you (4x icon + text + number), and perhaps print in red those those resources that you are lacking when a building cannot be built?

See above.

3.) Why red? Isn't the "greyed out" the more known UI paradigm to signal that something is not available right now?

Because it's not simply not available, it's not available due to a lack of resource.

4.) Why is the Recycling Facility never red?

It's a lot cheaper than other structures. That's something I need to balance better.

5.) When building something in a factory, but having no place to put it (no free slots and no warehouse) can we print the IDLE_REASON somewhere in the factory production window? Perhaps add a yellow footer with an triangle with an exclamation sign in the footer as to why this building is not producing? I picked yellow as red on dark grey is not as visible.

Yes. Two things I want to do here, use the Notifications interface I'm working on and have that more obvious in the Structure Inspector. It still needs a little tlc.


Remove c_ for constants.

Fixes https://github.com/Azure/azure-sdk-for-cpp/issues/1482
Pull Request Checklist
Please leverage this checklist as a reminder to address commonly occurring feedback when submitting a pull request to make sure your PR can be reviewed quickly:
See the detailed list in the contributing guide.

[x] C++ Guidelines
[x] Doxygen docs
[x] Unit tests
[x] No unwanted commits/changes
[x] Descriptive title/description

[x] PR is single purpose
[x] Related issue listed

[x] Comments in source
[x] No typos
[x] Update changelog
[x] Not work-in-progress
[x] External references or docs updated
[x] Self review of PR done
[x] Any breaking changes?

/azp run cpp - storage

/azp run cpp - storage


fix password input hint stylings

Details
Harmonises stylings of hint text when in neutral and error state
Fixed Issues
$ https://github.com/Expensify/App/issues/6825
QA Steps

Create a new account
Click link in email
Enter asdfasdF
Remove focus from input
See hint text changes to red and shows an error
Click back into the password input and enter 1
See hint text changes back to grey stylings, but it doesn't shift

[x] Web
[x] Mobile Web
[x] Desktop
[x] iOS
[x] Android

Screenshots
Web
https://user-images.githubusercontent.com/47184118/147495533-b04cccff-e35d-4ddc-a1bb-6288bff6527e.mp4
Mobile Web
https://user-images.githubusercontent.com/47184118/147495951-6dd4cc1e-8400-4dbc-84dc-da16f39f8d64.mp4
Desktop
https://user-images.githubusercontent.com/47184118/147496396-d9f08183-c67c-4580-84ba-9f1553b3b48a.mov
iOS
https://user-images.githubusercontent.com/47184118/147772828-2ca959d8-28cd-4172-b572-7121b712649b.mov
Android
https://user-images.githubusercontent.com/47184118/147614695-11868036-d8ae-4b73-9e4b-5a0777ba659f.mov

Suggestions on how to test on iOS and Android for this?
The app crashes when I click debug in the RN debugger menu. Without this I can't use the console to:
this.document.location = "http://localhost:8080/setpassword/4562750/xxx"
Do we need to test on all platforms for such a simple CSS change?

As UI change affect each platform, yes you are required to test it on all even if it's a small change.
Please use Flipper to test it and I not sure why do you need a debugger for this change?

I need to navigate to the setPassword URL from the email in the app

Waiting for tests to be done on all platforms....

I'll have the screen recording of iOS done tomorrow

@parasharrajat looks like tests passed, mind giving this a review before I do? ;)

Sure, I was just waiting for videos of all platforms.

I've uploaded the iOS test video. There is a bug shown in iOS when the screen res is low. I've not reported it yet.

:hand: This PR was not deployed to staging yet because QA is ongoing.


Finishers refactor

This PR adds RemoveFinisher parameter to ArgDef struct. I set it for all auto-generated struct setters,.
This fixes #87
Also close #196 (no longer needed as root case is fixed)

I'd appreciate any feedback from testing :smile:
CC @Wolf65 @neclepsio @ptxmac

Everything seems to be working.


[CSM-362] Sync progress changed datatype - fix api

Fixes https://issues.serokell.io/issue/CSM-362 . This introduces breaking change for UI as it has to take into account another Object nesting:

before getChainDifficulty: 2
now getChainDifficulty: { getBlockCount: 2 }

> api.syncProgress().then(console.log)
Promise {
  <pending>,
  domain:
   Domain {
     domain: null,
     _events: { error: [Function: debugDomainError] },
     _eventsCount: 1,
     _maxListeners: undefined,
     members: [] } }
> { _spPeers: 0,
  _spNetworkCD: { getChainDifficulty: { getBlockCount: 2 } },
  _spLocalCD: { getChainDifficulty: { getBlockCount: 2 } } }

cc @darko-mijic

@flyingleafe purescript-bridge is working ok. But aeson and argonaut (ie, purescripts aeson) are in very sensitive sync. Argonaut is configured to work well with deriveToJson which is using TH under the hood with some options tweaked. deriving instance won't work because of GeneralizedNewtypeDeriving which changes the implementation (if I remember correctly)


Unable to Remove or Replace Dead Node

Checklist

[X]  I am not using Home Assistant. Or: a developer has told me to come here.
[X] I have checked the troubleshooting section and my problem is not described there.
[X] I have read the changelog and my problem is not mentioned there.

Deploy method
Home Assistant Add-on
Z-Wave JS UI version
9.17.0
ZwaveJS version
13.1.0
Describe the bug
Setting up a new system for a family member and had a couple nodes that were intermittently unavailable.  Attempted to do a 'replace' for one of them but could not. The other did the normal exclusion and inclusion and it worked fine. All steps were performed through the zwaveJSui GUI.
Now the node (7) that we attempted to replace is stuck is stuck in the zwaveJSui database. We have already added it as a new node (16) but the original node 7 is stuck as dead and cannot be removed.
To Reproduce
Factory default one of the nodes and attempted to replace it. Waited for node status to be "dead" and started the replace in Nodes Manager. Received the following error. Only able to get partial text as the error appears briefly.
or while calling replaceFailedNode: The node replace process could not be started due to the following reasons:
· Node 7 is not in the list of failed nodes (ZW0362)

Then tried to remove the node through Node -> Advanced -> Failed Nodes and received the following error.
Error while calling removeFailedNode: The node removal process could not be started due to the following reasons: · Node 7 is not in the list of failed nodes (ZW0360)

Waited several hours and tried to remove the node again and received the same error.
Expected behavior
Be able to replace or remove a dead or failed node.
Additional context

Node Debug
{
  "id": 7,
  "name": "Greenhouse Heater Dead",
  "loc": "Greenhouse",
  "values": [],
  "groups": [],
  "neighbors": [
    1,
    3,
    5,
    6,
    8,
    9,
    10,
    13,
    14
  ],
  "ready": false,
  "available": false,
  "hassDevices": {},
  "failed": false,
  "inited": false,
  "eventsQueue": [
    {
      "time": "2024-08-14T12:59:00.419Z",
      "event": "dead",
      "args": [
        0
      ]
    },
    {
      "time": "2024-08-14T12:59:00.425Z",
      "event": "interview failed",
      "args": [
        {
          "errorMessage": "The node is dead",
          "isFinal": true
        }
      ]
    }
  ],
  "status": "Dead",
  "interviewStage": "ProtocolInfo",
  "priorityReturnRoute": {},
  "customReturnRoute": {},
  "customSUCReturnRoutes": [],
  "applicationRoute": false,
  "hexId": "0xXXXX 0xXXXX-0xXXXX",
  "dbLink": "https://devices.zwave-js.io/?jumpTo=0xXXXX:0xXXXX:0xXXXX:0.0",
  "productLabel": "Unknown product 0xXXXX",
  "productDescription": "0xXXXX",
  "manufacturer": "Unknown manufacturer 0xXXXX",
  "protocolVersion": 3,
  "nodeType": 1,
  "endpointsCount": 0,
  "endpoints": [
    {
      "index": 0,
      "label": "Root Endpoint"
    }
  ],
  "isSecure": false,
  "security": "None",
  "supportsSecurity": false,
  "supportsBeaming": true,
  "isControllerNode": false,
  "isListening": true,
  "isFrequentListening": false,
  "isRouting": true,
  "keepAwake": false,
  "maxDataRate": 100000,
  "deviceClass": {
    "basic": 4,
    "generic": 16,
    "specific": 1
  },
  "lastActive":<PHONE_NUMBER>440,
  "firmwareCapabilities": {
    "firmwareUpgradable": false
  },
  "protocol": 0,
  "deviceId": "undefined-undefined-undefined",
  "_name": "Greenhouse Heater Dead (Greenhouse)",
  "statistics": {
    "commandsTX": 0,
    "commandsRX": 0,
    "commandsDroppedRX": 0,
    "commandsDroppedTX": 0,
    "timeoutResponse": 0
  },
  "prioritySUCReturnRoute": false,
  "errorReceive": false,
  "errorTransmit": false
}

zwavejs_2024-08-13.log
Question: What are the steps a dead node becomes failed? How long does it take? Is there anyway to manually make a dead node status become failed?

Please make a driver log of you trying to remove the node, but on loglevel debug and attach it here as a file (drag & drop into the text field).

Which controller are you using? Which firmware version is running on it?

Debug info for the controller
{
  "id": 1,
  "name": "Smartstick",
  "loc": "",
  "values": [],
  "groups": [],
  "neighbors": [],
  "ready": true,
  "available": true,
  "hassDevices": {},
  "failed": false,
  "inited": true,
  "eventsQueue": [
    {
      "time": "2024-08-14T20:34:23.132Z",
      "event": "alive",
      "args": [
        0
      ]
    },
    {
      "time": "2024-08-14T20:34:23.133Z",
      "event": "ready",
      "args": []
    },
    {
      "time": "2024-08-14T20:34:23.133Z",
      "event": "ready",
      "args": []
    }
  ],
  "status": "Alive",
  "interviewStage": "Complete",
  "priorityReturnRoute": {},
  "customReturnRoute": {},
  "customSUCReturnRoutes": [],
  "applicationRoute": false,
  "hexId": "0x027a 0x0004-0x0610",
  "dbLink": "https://devices.zwave-js.io/?jumpTo=0x027a:0x0004:0x0610:1.40",
  "manufacturerId": 634,
  "productId": 1552,
  "productType": 4,
  "deviceConfig": {
    "filename": "/data/db/devices/0x027a/zst39lr.json",
    "isEmbedded": true,
    "manufacturer": "Zooz",
    "manufacturerId": 634,
    "label": "ZST39 LR",
    "description": "800 Series Long Range USB Controller",
    "devices": [
      {
        "productType": 4,
        "productId": 1552
      }
    ],
    "firmwareVersion": {
      "min": "0.0",
      "max": "255.255"
    },
    "preferred": false,
    "metadata": {
      "comments": []
    }
  },
  "productLabel": "ZST39 LR",
  "productDescription": "800 Series Long Range USB Controller",
  "manufacturer": "Zooz",
  "firmwareVersion": "1.40",
  "sdkVersion": "7.22.0",
  "protocolVersion": 3,
  "endpointsCount": 0,
  "endpoints": [
    {
      "index": 0,
      "label": "Root Endpoint"
    }
  ],
  "supportsSecurity": false,
  "supportsBeaming": true,
  "isControllerNode": true,
  "isListening": true,
  "isFrequentListening": false,
  "isRouting": true,
  "keepAwake": false,
  "maxDataRate": 100000,
  "deviceClass": {
    "basic": 2,
    "generic": 2,
    "specific": 1
  },
  "lastActive":<PHONE_NUMBER>910,
  "firmwareCapabilities": {
    "firmwareUpgradable": false
  },
  "protocol": 0,
  "deviceId": "634-1552-4",
  "hasDeviceConfigChanged": false,
  "rfRegions": [
    {
      "value": 2,
      "text": "Australia/New Zealand"
    },
    {
      "value": 8,
      "text": "China"
    },
    {
      "value": 255,
      "text": "Default (EU)"
    },
    {
      "value": 0,
      "text": "Europe"
    },
    {
      "value": 3,
      "text": "Hong Kong"
    },
    {
      "value": 5,
      "text": "India"
    },
    {
      "value": 6,
      "text": "Israel"
    },
    {
      "value": 32,
      "text": "Japan"
    },
    {
      "value": 33,
      "text": "Korea"
    },
    {
      "value": 7,
      "text": "Russia"
    },
    {
      "value": 9,
      "text": "USA (Long Range)"
    }
  ],
  "supportsLongRange": true,
  "supportsTime": false,
  "_name": "Smartstick",
  "statistics": {
    "messagesTX": 21,
    "messagesRX": 40,
    "messagesDroppedRX": 0,
    "NAK": 0,
    "CAN": 0,
    "timeoutACK": 0,
    "timeoutResponse": 0,
    "timeoutCallback": 0,
    "messagesDroppedTX": 0
  },
  "prioritySUCReturnRoute": false,
  "lastReceive":<PHONE_NUMBER>910,
  "lastTransmit":<PHONE_NUMBER>455,
  "errorReceive": false,
  "errorTransmit": false,
  "powerlevel": 6,
  "measured0dBm": 0,
  "RFRegion": 9
}

RF Region is set to USA (Long Range) and everything appears to work well except not being able to remove this stuck node.

Please make another driver log of you trying to remove that device, on loglevel debug and attach it here as a file (drag & drop into the text field).
Please also make an NVM backup (to be found in the wand menu) and share that too.

@AlCalzone Attached are the requested files
12:45:05 log started
12:46:50 remove started
12:49:40 received remove failed notification in GUI
zwavejs_current.txt
NVM_20240815125416.bin.zip

Here's an archive containing the fixed NVM: NVM_fixed.zip.
Just restore it and it should be back to normal. Some routes may not be correct, but at least they shouldn't lock up the controller.
Disclaimer: While this functionality is well-tested, there's always a risk of something going wrong and possibly bricking the controller. I don't take responsibility if that happens.

Here's an archive containing the fixed NVM: NVM_fixed.zip.
Just restore it and it should be back to normal. Some routes may not be correct, but at least they shouldn't lock up the controller.
Disclaimer: While this functionality is well-tested, there's always a risk of something going wrong and possibly bricking the controller. I don't take responsibility if that happens.

That worked. Thank you. What's the best way to send a tip?

There are a few options on the project page. Github Sponsors or PayPal are probably the best.


Line break in job description

In  eg https://openondemand.rcs.ic.ac.uk/pun/sys/chemistry_portal/directory/96/
Job description - O-bridge protonated , PT from N to O using Acetic G = -1140.045940, OMe anomer to evict B-O bond
could you line break to
Job description:
O-bridge protonated , PT from N to O using Acetic G = -1140.045940, OMe anomer to evict B-O bond
This makes it easier to copy/paste the description when preparing a continuation job input.

Added via 7fbfb85f747c4ba2ce535ef9dae27438d69a1f79


Add to Caddy download page

@RussellLuo I see you have other Caddy plugins registered, but this one seems to be missing on the Caddy download page.

Oh, sorry, didn't see it's a monorepo. I meant the layer4 plugin, the one that adds (some) Caddyfile support for caddy-l4.

Done! Now layer4 can be downloaded from https://caddyserver.com/download :)

I'm going to close this issue, feel free to open issues if you have other questions :)


No way to tab to the gray buttons

Examples, Options, Run, etc. are created as p tags in the DOM. This means they don't have tab focus when the user is pressing tab around the site. This is a particularly bad problem for users without a mouse, such as accessibility users, and for users who prefer to navigate quickly using the keyboard.
Recommended solution: switch them to <button type="button">.

This is fixed


Add support for resizable overlays

Add mostly complete support for resizable overlays.
Closes #3916
Original PR: #4509
Signed-off-by: Tomas Slusny<EMAIL_ADDRESS>Preview:

Added javadoc, removed that shadowed stuff & added docs

If you resize an overlay in a hotspot it will be moved out of the hotspot, but still be in the same spot, under other overlays.

Fixed. Also fixed small issue with stuff jumping around while resizing (its not jumping around at all anymore)

If you try to resize a WidgetOverlay it will offset it

Hmmmmm. Maybe I should just add some isResizable flag to Overlay, set it to true in OverlayPanel and also in ScreenMarker overlay and just ignore rest. I think that would be safest approach?

Alright, updated with that

Updated, changed the tolerance to 5px

Updated. Good catch with the gap. Now infoboxes are wrapped at 4 by default, I updated the description of input consuming commit and reverted the change in NpcAggroOverlay and changed it to use setClearChildren(false) instead.

This still does not wrap at 4 infoboxes for me, but now 5, by default.


OAK-6766: Convert oak-lucene to OSGi R7 annotations

I don't think it can get simpler anymore.

Have you tried adding the private property names to the annotation, but leaving the @Attribute meta-annotation off? I have a feeling that could work, and you could then access the values more easily. YMMV, I am not 100% certain.

@jsedding Yes, I tried that :)

Addressed @kwin 's suggestions.


Add files via upload

Fixes: https://github.com/MicrosoftDocs/architecture-center/issues/2325
Fixes: AB#287622

Please don't merge, pr in the wrong repo.


Not working on iOS

Hi,
I was able to add the lib to my project and make it work on Android.
On iOS I don't have any errors but I can't see the secure/public keys from my keys.json file. What I can see is the keys that you added by default on the generatedDotEnvFile.
My logfile inclues: env: node: No such file or directory
Is anyone aware of what this issue is or the route cause ? I can't find a solution for it. I did follow all the spects on README but I can't make it work.
Thanks!

FIXED: The issue was created by using NVM. Xcode was not able to find node

@numandev1
I hope you add any guide for user who used Node.js version manager (nvm or fnm ...)
I think a lot of RN developers are not familiar with native ecosystem.
So I suggest to add Pre-actions script guide within document (like Sentry SDK guide)
# Setup nvm and set node
[ -z "$NVM_DIR" ] && export NVM_DIR="$HOME/.nvm"

if [[ -s "$HOME/.nvm/nvm.sh" ]]; then
. "$HOME/.nvm/nvm.sh"
elif [[ -x "$(command -v brew)" && -s "$(brew --prefix nvm)/nvm.sh" ]]; then
. "$(brew --prefix nvm)/nvm.sh"
fi

# Set up the nodenv node version manager if present
if [[ -x "$HOME/.nodenv/bin/nodenv" ]]; then
eval "$("$HOME/.nodenv/bin/nodenv" init -)"
fi

# Set up the fnm node version manager if present
if [[ -s "$HOME/.fnm/fnm" ]]; then
  eval "`$HOME/.fnm/fnm env --multi`"
fi

# Trying notion
if [ -z "$NODE_BINARY" ]; then
if [[ -s "$HOME/.notion/bin/node" ]]; then
export NODE_BINARY="$HOME/.notion/bin/node"
fi
fi

[ -z "$NODE_BINARY" ] && export NODE_BINARY="node"

$NODE_BINARY "${SRCROOT}/../node_modules/react-native-keys/keysIOS.js"


Upgrade required superagent lib to latest, >= 3.8.0

Versions of superagent < 3.7.0 are subject to a Denial of Service via zip bombs.
Upgrade to latest version to address this issue.

This issue would be resolved by the merge of PR #453.

Closed by #474


Introduce the service class for the daemon to log events of starting/stopping the bundled web server.

Adding constants: common notification messages.
Bringing out closing the system logger action into the controller.
Introducing the service class for the daemon: it is used solely to log events of starting/stopping the bundled web server.
Making a group assignment a bit more Groovysh — multiple assignment.
Utilizing the server registry: populating it with the server metadata.
Responding to a client with HTTP 200 OK and "Not yet implemented." in text/plain for GET requests to /route/direct.
Bumping version number to 0.1.2.

She looks manageable and responsive ! :+1: — Approved. :blue_heart:


0.33: missing assets

Steps to reproduce the bug with the above code
Only Github-generated source archive assets are available: https://github.com/obi1kenobi/cargo-semver-checks/releases/tag/v0.33.0
Actual Behaviour
No assets available.
Expected Behaviour
Assets available like 0.32.
Generated System Information
N/A
Build Configuration
No response
Additional Context
No response

Ah, this action failed: https://github.com/obi1kenobi/cargo-semver-checks/actions/runs/10084016103/job/27882323989

Because the workflows were updated during the release, Github refuses a push updating them from a workflow:
To https://github.com/obi1kenobi/cargo-semver-checks
 ! [remote rejected] v0.33.0 -> v0.33.0 (refusing to allow a GitHub App to create or update workflow `.github/workflows/ci.yml` without `workflows` permission)
error: failed to push some refs to 'https://github.com/obi1kenobi/cargo-semver-checks'

Fix part 1: #837
I'll use that to build the missing 0.33 assets. Then I'll amend the tagging portion of the workflow so it doesn't fail again in the future.

Fix part 2: #838
Hopefully that prevents the problem from coming back.
Apologies for breaking your workflow, and thanks for your patience!

Thanks!


Issues to consider before releasing as production

Now that https://github.com/openmicroscopy/omero-server-docker/pull/1 is merged we're close to production. Once this becomes official it'll be harder to make changes. Some of the issues we should give a final review to are:

[ ] Configuration environment variables: e.g. CONFIG_omero_web_public_enabled=false becomes omero.web.public.enabled=false
[ ] Default passwords: The default OMERO root account password is omero, should we generate a random password instead? Similarly for the public password when https://github.com/openmicroscopy/omero-server-docker/pull/2/ is merged?
[ ] Default value for the database host. Currently it's db under the assumption that a postgres container will be linked with the name db, should we remove the default and make it mandatory instead?

I slightly prefer using the dotted versions and dropping the underscore parsing.
I'd vote yes for generating passwords.
I don't particularly mind db being part of the the docker "API".

I slightly prefer using the dotted versions

Unfortunately that doesn't work for environment variables:
$ docker run -it -e ENV.VAR=a -e ENV_VAR=b centos sh -c 'set | grep ENV'
BASH_EXECUTION_STRING='set | grep ENV'
ENV_VAR=b

docker run -ti --rm -e a.b=1 centos python -c "import os; print os.environ['a.b']"

does as does:
docker run -it --rm -e ENV.VAR=a -e ENV_VAR=b centos bash -c 'printenv ENV.VAR'
a

Cool, I wasn't aware of that. Do you know an easy way to reference ENV.VAR in a shell, e.g. @dpwrussell uses a bash script in #2 https://github.com/openmicroscopy/omero-server-docker/pull/2/commits/165c1aef3f1c846e7a91a1cf784a11d91119e56c

I also realised that the underscore replacement technique wont work because of configs like this: omero.web.public.url_filter, which contain a literal underscore.

With respect to password generation, it would then be necessary to pass in a password if using docker-compose (or some other prescripted docker start commands) I assume?

Underscores are supported by replacing _ with __, e.g. CONFIG_omero_web_public_url__filter=
. in the variable names seems nicer but less standard or obvious to work with in scripting languages. Do you have a preference, or other ideas?
For password generation: I guess if you're linking containers then the onus would be on you to define a password for all containers requiring it.

Ah, I see.
I think it would be a mistake to use the periods as then it is harder to customize as you couldn't write a bash script for example.
I can imagine that as configs get more complicated, we would probably want to be passing some encoded lock of YML or JSON, so perhaps the underscore technique is ok, if it is not going to be the recommended way down the line.

One alternative to using env-vars could be to pass them as command line parameters when starting the container, e.g. docker run openmicroscopy/omero-server --config omero.db.name=xxx --config omero.data.dir=/external/mount

Though, maybe not for passwords because one's command-line parameters are visible to other users on the system. (I may be misunderstanding this discussion though.)


[QUESTION] How to ignore invalid date cell?

I have a sheet which contains some invalid date cell. It contains any text.
When the reader encounters it, it raises an error.
  [ErrorException]
  A non-numeric value encountered

I would like the reader to ignore it if the reader encounters it.
What should I do?

Can you paste more stacktrace please.

Hey, had same problem, go into the excel.php config file and under 'dates' change 'enabled' to 'false'.


Moved Project properties under System

Moved these properties under the System properties set

Project.Document Number
Project.Revision Number
Project.Project Name

Appreciate it.


PPPowerAppsEnvironment fails with a missing method exception

Details of the scenario you tried and the problem that is occurring
Export-O365Configuration -Quiet -ComponentsToExtract @("chckPPPower AppsEnvironment")
It fails with a missing method exception. some dll version mismatch.
I tried to pinpoint it down, but did not get far.
When i try to manually execute the commands, I get the results as expected (or better said, i get no error since i have no environments)
Test-MSCloudLogin -Cloud $GlobalAdminAccount `
        -Platform PowerPlatforms
Get-AdminPowerAppEnvironment

If I try to export the configuration, then it fails, except if it's in the same powershell session where I retireved the environments manually (the correct dll is loaded in the session).
I uninstalled all of the older versions of the depencencies but no luck.
I can do additional digging if this is not reproducable.
Verbose logs showing the problem
[Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext] does not contain a method named
'AcquireTokenByRefreshToken'.
At C:\Program Files\WindowsPowerShell\Modules\Microsoft.PowerApps.Administration.PowerShell\2.0.26\Microsoft.PowerApps.
RestClientModule.psm1:65 char:14

$token = Get-JwtToken -Audience $audience

         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : InvalidOperation: (:) [Get-JwtToken], RuntimeException
FullyQualifiedErrorId : MethodNotFound,Get-JwtToken

Suggested solution to the issue
The DSC configuration that is used to reproduce the issue (as detailed as possible)
The operating system the target node is running
OsName               : Microsoft Windows 10 Enterprise
OsOperatingSystemSKU : EnterpriseEdition
OsArchitecture       : 64-bit
WindowsVersion       : 1803
WindowsBuildLabEx    : 17134.1.amd64fre.rs4_release.180410-1804
OsLanguage           : en-US
OsMuiLanguages       : {en-US, hr-hr}
Version of the DSC module that was used ('dev' if using current dev branch)
dev

@vinkobedek Currently investigating this one. I got a similar issue in ONE of my environments yesterday. Putting priority on this issue.

@vinkobedek it appears that my error was related to something else. I am having a hard time replicating this in any of my environments. If you run the newly introduced function located at:
https://github.com/microsoft/Office365DSC/blob/Dev/Modules/Office365DSC/Modules/Office365DSCUtil.psm1#L1961
On a new environment. Are you still getting the error? This function will automatically install the latest Dev branch code along with all dependencies. Thanks

I tried on a clean environment, and yes, everything works as expected. It is strange since my colleagues are experiencing the same issue.  I will close this issue, but may get back to you if we determine why it's happening on our end.


rank of RoaringBitmap produces incorrect result #158

The issue is addressed in the buffer package too.

Coverage increased (+0.02%) to 89.881% when pulling cc6a7b4d7f6ef4a416791efb242d58b7eeedc055 on openkappa:rank-bug into b4e7ab6f9a588c3479a58a5c0d6646cb88eeaafd on RoaringBitmap:master.

@openkappa thanks


Fade to Black: python code formatter

I think it's important that the code should not only have good performance but also be stilish ^^' As a way to ensure that, I really like the black project. I only have issue with it
it's that it's using 4 space indentation, when I really really like 2 spaces >.<
But Black being the "The Uncompromising Code Formatter" of course they will not compromise on the
indentation......
In any case, I'm opening this issue to see if anyone has thoughts on this, and otherwise I'll try to open a PR to add python code formatting

I'll also point out that the same result could be achieved using the yapf auto-formatter from Google, which can be configured to follow the Google Python guidelines, used in projects like TensorFlow: https://github.com/google/styleguide/blob/gh-pages/pyguide.md

I'm gonna move ahead with using Black, will also try to add auto-formating on PRs

Ok done :-D, black it is


Windows alt+{number key} shortcuts not working anymore

VSCode Version: 1.48.0
OS Version: 10.0.19041 (Windows 10)
I use a French keyboard

Steps to Reproduce:

Try any shortcuts key with alt+{number key} (not the numpad). Examples: alt+1, alt+2, alt+3, ...

Does this issue occur when all extensions are disabled?: Yes

Since the last update of VS Code, when using an alt+{number key} shortcut, it won't work.
Tests
Shortcut commands that I tested are working fine with others shortcut keys (Examples: F1, F2, ...).
I also tried custom shortcuts key to override default alt+{number key} shortcuts: not working.
Maybe the problem comes from Windows alt key behavior that is focusing the VS Code windows' menu when pressing alt.
Here what I call the: VS Code windows' menu

Solution: override Windows alt key behavior when a shortcut uses the same combination.

Possibly related to: #104684

I don't know how but I don't have the problem anymore !


store: Do not unnecessarily allocate a txid in deployment_synced

@leoyvens I added another commit to update the wasmtime dependency so Travis will hopefully not fail. Could you let me know that that is the right thing to do?

Urgh .. just realized that a fix was already committed for wasmtime; just got rid of the additional commit again.


Sanitize unwanted HTML content

Describe the bug
I created an editor which should use just H3, P, OL>LI and UL>LI elements. It is important because other content would probably damage the application.
Steps to Reproduce / Codesandbox Example
Steps to reproduce the behavior:

Create an Editor using just following actions: H3, P, OL>LI and UL>LI
Copy from another HTML-page some HTML-Fragments containing e.g. an hyperlink
Paste it in the editor
See error: the content is pasted contain the links:

Fork this or create a new Codesandbox replicating your error
https://codesandbox.io/s/vue-issue-template-ppmn4?fontsize=14
Expected behavior
If there is no action for A-Elements defined, A-elements should be sanitized on copy&paste too.
Or on the other hand it is in addition configurable which elements are sanitized.
Screenshots

Environment

OS: Windows 10
Browser chrome
Version  80.0.3987.122
Mobile / Desktop: Desktop

You are using all extension in your example (including the link extension).
extensions: [
          new Blockquote(),
          new BulletList(),
          new CodeBlock(),
          new HardBreak(),
          new Heading({ levels: [1, 2, 3] }),
          new HorizontalRule(),
          new ListItem(),
          new OrderedList(),
          new TodoItem(),
          new TodoList(),
          new Bold(),
          new Code(),
          new Italic(),
          new Link(),
          new Strike(),
          new Underline(),
          new History()
],

If you don't want to support links you have to remove new Link().

🙈 oh. yes. you are right.
I updated the example and it works like a charm. Sorry.


Fix status badge link

Checklist

[x] All new jobs, commands, executors, parameters have descriptions
[x] Examples have been added for any significant new features
[x] README has been updated, if necessary

Motivation, issues
The status badge currently doesn't link to CircleCI builds of the project.
Description
Make the status badge link to the CircleCI builds of the project

thanks ! @lokst


Add new validation fields in the Alastria Tokens

Once https://github.com/alastria/alastria-identity-lib/issues/185 is done, modify the Alastria Token validation so we also check this news attributes.
Also remove the validation from field "ani".

Blocked by the Architecture team.
As soon as it is well defined, we will unlock it.

Done


🐛 Bug Report: techdocs-cli publish stopped working in version 1.8.12

📜 Description
We've been calling the following in CI which has started failing since 1.8.12 release
npm install -g @techdocs/cli
techdocs-cli publish --publisher-type awsS3 --storage-name something --entity something --directory some_dir

Have worked around this by pinning the version back to 1.8.11.
👍 Expected behavior
Techdocs publishes as in 1.8.11
👎 Actual Behavior with Screenshots
Error message:
Cannot find module 'morgan'
Require stack:
-<EMAIL_ADDRESS>-<EMAIL_ADDRESS>-<EMAIL_ADDRESS>- /techdocs/node_modules/@techdocs/cli/bin/techdocs-cli

👟 Reproduction steps
npm install<EMAIL_ADDRESS>npx techdocs-cli publish --publisher-type awsS3 --storage-name something --entity something --directory some_dir

📃 Provide the context for the Bug.
Publishing techdocs to s3 no longer works. We have a workaround for now (downgrading) so impact limited.
🖥 Your Environment
CI is running node v16.15.1 (don't ask) in a container.
Have tested locally with node v20.9.0 on macos and got the same result.
👀 Have you spent some time to check if this bug has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
No, but I'm happy to collaborate on a PR with someone else

Just seen that this is a duplicate of #25303 (sorry) which has been closed... will close this one


chore(portal): Enable temp_accounts in prod portal

Wasn't sure when prod was getting deployed, so left out the env var to enable temp accounts for prod in my last PR.  This PR will enable prod once merged and deployed.