Improve screen reader accessibility for website and coding examples

This issue was originally reported by @frastlin via facebook/react/issues/9549
That issue has a lot of discussion worth reading. Although some of the specific issues mentioned in that thread have since been addressed, I'm moving the issue here to continue the discussion!

I think maybe the biggest challenge is that the tools people with special needs use (such as screen readers) will always lagg behind the a11y specs. I've recently followed the latest WAI/WCAG/Aria specs but got the feedback that "Yes that's how it is supposed to work, but it doesn't yet. So it is of no help for me. Standards aren't reality".

I'd like to learn more to confirm that ARIA isn't enough. I'm not super knowledgeable in this area. Do you have references?
I also left a comment on the previous issue.

If you create a "table" out of something else + ARIA, yeah I would advise testing in a few screen reader + browser combos. Two things are supposed to happen when you ARIA something:

the browser is supposed to know what that ARIA means and post the correct names, roles and states to the accessibility tree
the assistive technology (AT) is supposed to rely on that tree to know what's going on. AT is slowly moving in that direction, esp as newer browsers like Edge disallow DOM-dumpster-diving (accessing the DOM directly in the way that JAWS and virtual-buffered SRs traditionally have).

So the browser needs to output the right tree and the AT needs to understand that tree.
When testing if some general thing works as we think it should, these tend to be my recommended testing combos:

Firefox and NVDA on Windows
IE and JAWS (if you want Edge and JAWS, know this is isn't complete and you have to enable Edge-use manually in JAWS now; I believe this is also only in the latest (18) version, older versions don't do squat)
Safari and VoiceOver on Mac
Safari and VoiceOver on iOS (I add this one because it seems the iOS VO devs get more support or something so often VO on iPhone works way better than VO on desktop). For now avoid testing Firefox with VO on Apple products, Mozilla says their browser doesn't have enough access to things properly yet. Chrome is "okay" but a second choice.

If you're making a product for enterprise, people tend to just do the first two. Testing every combo of every thing isn't what anyone wants to do, but for seeing if a feature has enough support to be a thing, this is my personal bare-minimum list. Also we assume the tester is familiar with the ways one interacts with a table with a screen reader-- tables have table navigation and some other neat features that are a bit special to tables.

cc @flarnie 😄

Whoops 😦  Sorry. Accidental click!

Thanks so much @frastlin for opening the original issue, and @StommePoes, @jenshedqvist for the helpful info and discussion.
It sounds like the lack of accessibility in our examples was really frustrating and could have spread bad patterns - I apologize for that. Glad to hear the concerns everyone brought up, and we'll work on making things better.

The original issue points out a11y issues with FixedDataTable; I think you are right that this table component is not very accessible, and I just pinged the guardians of Open Source at Facebook to archive that project. Internally we have been moving away from FixedDataTable, and I believe accessibility is one of the reasons.
Sounds like the issue with buttons lacking labels in the tutorial has been fixed; we're happy to get other reports if any similar problems remain with current examples.
The accessibility team at Facebook is actively working on developing patterns and best practices for this, such as developing the Logical Grid Pattern that @jessebeach blogged about recently. cc @tatermelon in case you have ideas to add here. They also added the 'Accessibility' page in our docs, which covers some of the ideas folks mentioned in this issue.

Let's discuss any remaining action items to improve the examples and docs. Really awesome that we can work together on improving accessibility. :)

Adding to what Flarnie said- we'll also be happy to review PRs that improve accessibility (if you have any interest in contributing them).
Feel free to ping us ahead of time to discuss any large changes that you might be considering if you think they may be controversial.

Firstly, with all due respect, I'd like to thank everyone here that's created such a wonderful framework in React! The community is so thankful for all your efforts!
It sounds like there's a lot more work to do here, and much of it is educational for me and I honestly do not feel qualified to provide feedback or help on this bug. I'd just add, that as a likely typical reader of the documentation, I saw no mention of the .kbd-navigation bit and didn't notice it until after having wondered if I could navigate with tabs (much much after I'd coded up like 3-4 tic tac toe codepens and then in my Accessibility readings of late, realized, "hrm, I forgot to make that game if not screen reader accessible at least keyboard accessible.").
I'm referring to the current final result at:
https://codepen.io/gaearon/pen/gWWZgR
My whole point in saying this, is I think for the interim (while the more detailed issues with various screen readers and this bug are getting resolved), could you not at least:

Mention there's a .kbd-navigation used in the markup, and corresponding JavaScript is in a script tag in the HTML tab?
Or move that in to the JavaScript tab? It sort of feels like either an afterthought, or it's purposely being avoided (I'm not saying that's the intent! But, just from a UX standpoint it feels this way 😉)
Can we at least make mention of it somewhere in the tutorial? Even if it's to say, "hey, we haven't completely solved accessibility for this example but are working on it. In the meantime, we DO offer keyboard accessibility and you can have a look at the .kbd-navigation used etc. etc."

I think this would be helpful and an awesome step in the right direction so other developers like myself don't completely forget about this important part of front end development as they learn this wonderful React framework you've worked so hard on! Thanks :)

Data tables and complex tables (Tree Tables) have extremely spotty ARIA support and the patterns aren't quite firmed up. I think we're all still experimenting. The best advice now is keep it simple! Keep cell content homogenous and single-interaction. This area of research is still rife with possibilities and solutions.

OK, so simple fix for this:

put the button rows into a table. Every row should be a row in a normal table, just without headers. It's much prefered if the table element is used and css is used to style the table to look good. If that is completely impossible, then there is the role="table", but the native table would be much better.
Make the blank buttons say "Empty Square" or have a graphic of an empty square, then have the alt text say "empty square. ("empty" sounds fine as well). Currently the buttons are just blank which looks like a bug.
The div that shows: "Next player: X" should be an aria live region with atomic="true". This will give the player some feedback when they click the cell.

I'll try and do a PR now.

@frastlin I appreciate this and will keep an eye on github notifications. I think I could probably attempt to code up your specification but with your knowledge I think yours will be extremely helpful.
Re

Data tables and complex tables (Tree Tables) have extremely spotty ARIA support

I absolutely appreciate how complicated this could all get for certain tables and I read the logical grid article which was quite educational. However, in the interim we're talking about a simple game of tic tac toe, and, other use cases might be simple enough to be solved with today's tech. I see it oversimplified as:

the simple low hanging fruit cases
the complex data grid cases with a plethora of crazy controls, deletable cells, yada yada.

Obviously, both cases must get figured out, but I'm wondering if the simpler ones aren't already solvable? Hence I'm looking forward to seeing what following @frastlin spec is (even if it's using tables which some folks might be against, but if it has better screen reader support and is viable in the interim maybe it's fine?
@jessebeach I'm really looking forward to seeing what your team comes up with though. It sounds like a lot of research and I absolutely appreciate that and the article which was very informative.
@frastlin thanks for bring all this up in the first place and I look forward to seeing your demo if you find time!

Here is my version of the code.
What are your thoughts?
Most of the changes are in the Board render function. There are two render functions: The first uses the table element, and the second uses aria.
There is a problem with both examples though:
Since this is a game, it is a non semantic interface, which means that it does not follow proper HTML rules. For example, It is not ever correct to have a table without a header in a semantic interface. But this is a game, so it should have good UX, above being semantically correct. I'm worried though that new developers, who are the ones that will be reading this tutorial, are not going to understand the difference between semantic and non semantic interfaces.
99% of interfaces on the web are semantic, and should follow proper HTML practice, but this is part of that 1% that shouldn't. React has already encouraged the use of divs for everything, and this has really broken many websites, because divs communicate nothing to the screen reader, and aria is way to advanced for the overwhelming majority of web developers (mostly because they don't use a screen reader).
So the react tutorials and examples should all follow WCAG2.1 AAA, so developers know what is good practice. Because most developers learn good practice from tutorials and examples like this.
Because no one should use aria unless it's a last resort, or they have a non semantic interface (like this one), I am very hesitant to recommend the aria example, even though it would be a good place for aria.

@frastlin Thank you so much for coding this up!
So I see renderDiv is just there for aria based example. Thank you!
While I think the example should obviously address those users of assistive technology, I think those that do not should still be able to enjoy the game, and so I've forked your pen and taken the liberty to resize the game and strategically position the Empty Square. I used a sibling span to the square buttons (probably a  would have been better but that could be easily refactored):
https://codepen.io/roblevin/pen/WVoyPm?editors=0010
Now I'm left wondering:

Does the now meaningless <button> when no props.value violate and confuse screen readers?
Is there a mechanism that could be used to dynamically disallow the button when props.value is falsy?

For the later, could we not just toggle a button's attribute of aria-hidden="true" or aria-hidden="false" to achieve that more satisfactorily?

Update: I've used a  and I'm toggling aria-hidden on the button. My understanding is that as long as ancestors don't have aria-hidden set to true, you can use false value reliably. Is that in fact true?
Same pen: https://codepen.io/roblevin/pen/WVoyPm?editors=0010

No, this example doesn't work, the empty square doesn't take the onclick event, and I think the code is way too detailed. It's also using more aria, which should really be avoided at all cost.
Use CSS rather than HTML to make it look good. If the problem is that you want the squares to be blank, go ahead and use one of the tricks to make text hidden to sighted users.
.hidden
{position:absolute;
left:-10000px;
top:auto;
width:1px;
height:1px;
overflow:hidden;}

I just updated my code pen with your CSS and with making the class hidden when there is no value in the button. I'm not sure this hidden class is working, my screen reader says it is still 21PT.
I'll try messing around, but me using CSS is like a sighted person using Aria, very very very difficult!

That's absolutely a fair analogy and I'm still very much learning on this front! Unfortunately, all the squares are now pushed off the window for me. However...
It occurs to me that I overlooked a version that's much closer to your original example. I do not need to use a sibling at all for "empty info" since I believe I'm allowed to use a span or anything that qualifies as phrasing content inside a button:
https://www.w3.org/TR/html50/dom.html#phrasing-content-1
So all I need to do was use position: relative on the button to give a positioning context, and then was able to style the "Empty Square" at the bottom as I originally desired to. Otherwise, the only other thing I added was making it a fixed-layout table which as I understand it, is generally better performing in terms of reflows and rendering, and given it's a game that seems fine.

and I think the code is way too detailed
I think the code is back to being simple and without the extra aria too.

What do you think of it?

This looks good to me. Why not just place the x and o in the span and change the class? Whatever is easier to understand for newbies.
Also, what is:
.kbd-navigation JavaScript in HTML tab to see
// how keyboard navigation and mouse navigation are being toggled
// to preserve use by assistive technologies
? I didn't understand this, what is it for? Screen reader users don't need it, semantic buttons and table elements already provide perfect tabindex, click, and arrow key functionality.
If there is another type of assistive technology you're targeting, that's fine, but I've never seen it before.

Re: VO: I have no idea, NVDA on Windows says table with 3 columns and 3 rows. This is a nonsemantic interface, so it could be confusing VO (which is not as robust as NVDA or Jaws).
But a user who knows how to navigate tables using the screen reader will be able to view the board using the table navigation commands (NVDA it's ctrl+alt+arrow keys), and this clearly shows a 3 by 3 grid.

I think we can reduce the number of lines of the square function by making it:
function Square(props) {
	const emptyInfo = Empty Square

	return (

      <button className="square" onClick={props.onClick}>
        {props.value || emptyInfo}
      </button>

	);
}

I don't see any need for the function.

Regarding the comment, yes, that was totally confusing, my bad. I've changed it to hopefully make more clear the intent.
It now reads:
// Please see the .kbd-navigation JavaScript in this pen's HTML tab
// to see how keyboard navigation and mouse navigation are being toggled

The point of this, is to call out to readers of the example, that keyboard navigation styles are being toggled in the HTML tab of the Codepen pen. Many folks trying to learn React, will assume there's some placeholder HTML only used for the React sample app to hook in to with something like ReactDOM.render et al, and will very likely never even open that tab.
The global JavaScript I'm referring to essentially toggles between mouse and keyboard with dynamic classes .mouse-navigation and .kbd-navigation, so I think it's important for folks to go see what's happening there—especially since the documentation's tutorial makes no mention of it. If that were to change, I think the comment (which is really insufficient but at least "something") could be removed.
Also, that code seems way too global to me, but I haven't had time to consider an alternative properly. I think we could bring it closer to the game itself so it's less global.
Since we now have proper navigation for screen readers through the table-based approach, I suppose the only benefit the .kbd-navigation code is adding is the highlighting of squares via:
.kbd-navigation .square:focus {
  background: #ddd;
}

But we do need this...
In my reading about accessibility, there is the case made for someone who needs this sort of affordance if say they have tendonitis in the wrist or similar and cannot use a mouse but prefer keyboard navigation. They will be helped by the visual affordance the grey background offers as they navigate into and out of the squares.
That said, I'd be really excited if a developer could somehow just opt in for this sort of thing without having to write messy global event toggling handlers to do so. I could see this as either a 3rd party library, higher order function or component, or something to that affect. The current solution doesn't really scale for more complicated pages with nested components that may have naming or intent collisions e.g. if I elected to implement some sort of keyboard listening code but deeper within the component and/or DOM hierarchy (not an issue for this simple game of course). I would then have to debug to learn there was code doing toggling off the top level of the DOM.
Re the span thing, no, I cannot just add the 'X' and 'O' to the span. It is being used for the 'Empty Square' message and needs to be there for sighted users as we want that visually removed (but we do not want the 'X' and 'O' visually removed which is what would happen if they were placed in the span itself).
I agree about the extra function, it was left over from my earlier hacking. I've cleaned that up just now.

Re: VO: I have no idea, NVDA on Windows says table with 3 columns and 3 rows.
That's good to hear!

This is a nonsemantic interface, so it could be confusing VO (which is not as robust as NVDA or Jaws). But a user who knows how to navigate tables using the screen reader will be able to view the board using the table navigation commands (NVDA it's ctrl+alt+arrow keys), and this clearly shows a 3 by 3 grid.

This is all very educational to me as I try to level up my understanding of accessibility @frastlin so thank you for your invaluable feedback and guidance!

I thought that browsers provided highlighting by default for what element is focused?
Another option is to add an onFocus function to the button element that highlights the square when it is focused and removes the highlight when it is not focused. This would remove that global code.

Right, the browser generally provides an "outline ring", and the original tutorial's pen (and our new one) has:
.square:focus {
  outline: none;
}

.kbd-navigation .square:focus {
  background: #ddd;
}

Many folks don't like the aesthetics of this "outline ring" and will turn it off as such. Many times without even providing an alternative. Here, they've elected to, essentially, override it with the grey background which is probably a good thing in terms of maintaining the affordance.
Regarding attaching an onFocus handler  and I suppose an onBlur for exiting, yes, that and many other solutions would work and be scoped much closer to the "game" portion of the DOM tree.
Ideally, all this would be added in the React code itself. In terms of the new learner's perception, as it is currently coded (within the HTML tab and as a global), it comes off as an afterthought and could be interpreted that it was too hard for the original developers to incorporate into the React code itself—probably not the ideal message to send to the React learning community.
But above is just my opinion I guess. What do you think?

I think that rather than handling this styling in React, it would be better to handle it in CSS, as it is styling.
:focus
should do this, but I can't test it to see how it works. I believe the code would be:
.hidden:focus {
background: #ddd;
}
Then we get this behavior how we want it, if I'm understanding correctly. I think the amount of code should stay as little as possible in the tutorial.

We have to be very, very careful when deciding to remove focus styles. I get what @roblevintennis is saying in that "well people will do it" but while people will hang themselves we have a responsibility if we're the ones providing the rope.
We need to test, test, and test some more anything that bakes-in removing focus styles because some JavaScript thinks it could determine an input method: speech recognition for example is a bit notorious in sometimes triggering some events (blur) while not triggering others (dictating into a text input may not trigger an onChange).
Users with touchscreen laptops with mobility issues switch around between pens, fingers, mice and keyboard and there are some things out there that act like keyboards but not always (for example Switch Control has it's own focus thing going on where groups of focusables can themselves be considered "focussed" by the software... though so far as I know I believe it provides its own focus styles. One of these days I really need to dedicate myself to testing various CSS/JS focus-style wrangling with a couple of switch control programs).
I think whatever discussion here happens, for now it's probably not a good idea to have example code removing focus outlines. It could instead implement a nice/pretty focus style, which a) would remind people focus styles are a thing and b) remind people they don't always have to look like browser defaults, and move discussion about allowing anything baked-in to remove focus styles to a dedicated discussion.
As a note, from a Windows High Contrast fan: if you remove the outline property and do something like change a background colour, keep in an outline but use "transparent" as the colour: people who set their own colours of texts and backgrounds to ensure a super high contrast will not see your own colours, as they are overriding with theirs and at least specifically Windows High Contrast doesn't have the full range of styling that CSS has. Just always keep a outline: 1px dotted transparent; somewhere.

@StommePoes the outline: 1px dotted transparent; approach feels like a great way to preserve for folks setting their own colors. Love that!
I think we're talking about the same thing, but the unadulterated example (and mine) are BOTH removing with: outline: none and then using the background color on focus. I was sort of just preserving what they had, and looking at other areas of the code to add some of my own ideas to @frastlin initial example.
I agree with your sentiment of avoiding outline: none altogether, and the other points you've made regarding Switch Controls, etc. Unfortunately, I'm time constrained, but hope to try the outline transparent on my pen when I get another spare cycle.
Loving all the learning opportunities on this issue thread!

Hey all! I'm new to the thread, but I see there has been some awesome collaboration here that I'd like to help along! As a Developer Advocate for an accessibility testing company, I cannot stress enough the impact that could be made in the industry by introducing even basic accessibility concepts into the minds of new developers from the very beginning. This is right up my alley :)
I think the high-level topic of enhancing the accessibility of the documentation and code samples overall is a great goal, albeit pretty wide-ranging for a single issue thread to cover completely. I'd be happy to offer to start (and help tackle) a focused, crowd-sourced "task list" that can be approached in a modular, agile, and collaborative fashion (i.e. separate issues and small, clean PRs). @flarnie + @bvaughn, is that something either of you would like to be a part of?
First, though, I feel like this thread (@frastlin and @roblevintennis especially) made some really good progress towards integrating some accessibility improvements into the Tic Tac Toe starter project, and I'd hate for that to not bear any fruit! I'd be very happy to create a PR to capture (and further refine) the insights from this thread in the form of (1) code sample tweaks and (2) updates to the documentation language. Does anyone feel like that's premature, or that it needs to be revisited now that a bit of time has passed?

Yes, from a screen reader perspective:
https://codepen.io/roblevin/pen/PMjNwo?editors=0010
looks great and should be the example used in the tutorial.
CSS is not my strength, so if someone can do something to make the high contrast work while still keeping the look of the current game as much as possible, I think that's all that is needed before a PR will be ready.

Okay, I've gone ahead and normalized the look-and-feel of that code sample (in a forked Pen), and did some very minor tweaks, including:

Changed the CSS hidden class to sr-only, since it's not truly hidden, just visually hidden.
Made the
 sr-only to match the appearance of the existing code sample
Changed the text of the empty squares from "Empty square" to just "Empty" to reduce noise (hopefully not by too much).

Here's the updated code sample: https://codepen.io/A360/pen/a3ad15e880e7afc2ccb4cbb4f5b2fb34?editors=0101
I'm not 100% sure where the conversation landed regarding focus styling. In my personal experience working at an accessibility consulting company, I see people get this wrong far more often than they get it right. Given that this is a starter tutorial that is meant to set a good example of best practices for novice developers, I feel like relying on native focus styles and behaviors as much as possible would be best.
When :focus-visible is more widely supported we might want to include it in this example, but until then we'd have to add a polyfill which just introduces (1) complexity and (2) external dependencies (possibly). I would vote for us trying to keep the sample as simple and focused as possible so that beginners don't have to learn React AND intermediate/advanced focus styling.
If this code sample is still looking good to folks, I can start looking at the documentation text and developing code sample replacements for the individual "steps" that are there now. Before going too much further down that route, though, I'd like to touch base with the maintainer(s) of this repo to see if this work is in alignment with their vision so I don't end up creating a dud of a PR :D

Hi @jasonwebb I appreciate you jumping in and I'm glad you're continuing to take the pen further with your fork. I saw your earlier comment too, but I've been totally swamped.
I did just have a look at the linked pen and (maybe this was happening on mine too?) but when I first landed on that page, and then clicked the top left most square, the whole thing grid re-rendered and I lost my 'X'. Hopefully that repro is clear enough.
It's interesting, since having done the referenced pen (probably a good several months back), I've implemented a "data grid" basically complying with this one: https://www.w3.org/TR/wai-aria-practices/examples/grid/dataGrids.html. I don't yet have a public link unfortunately, but it's aria based not table so perhaps it will suffer from the limited aria support we currently have but getting better.
The overarching navigation rules they set out were basically you tab into the grid, and then, you switch to using arrow and home/end keys to navigate. It took quite a bit of doing to pull off, but I'm using it in a product my current employer is working on (unreleased).
So now I'm wondering what the exact rules are for when you're supposed to switch from using tabs to using arrow keys once you're "inside" a grid and if that is considered totally different from what's being done here (a literal
 element being used to navigate the matrix of a game.
I feel you on wanting to get some feedback from the maintainers that a pen rather a PR, would be utilized in their docs if done correctly—you don't want to spin your wheels. I was mainly doing these pens as an exercise and since I was having the opportunity to learn some real a11y tips from @frastlin; and also because I do think we should be perpetuating moving towards a11y not away from it (even though I admit I need to get a lot better at it myself!).
But, yes, I absolutely agree that something that actually works in terms of being accessible would make and ideal example for a framework as popular and prolific as React is. I'm sure the maintainers want to do what's right and are overwork, but, we'll just have to see what they decide to do here :)

Re: CodePen mouse click refresh glitch
I'm willing to bet that the mouse click glitch you're seeing is a quirk of the CodePen Editor UI. CodePen will recompile and reload the JavaScript when you first load the editor (look for the status messages at the bottom status bar, to the left of the "Delete" and "Add to Collection" buttons). Try it in the Debug view, or just wait for the Editor to fully load, and see if its still happening.
Re: using the ARIA grid pattern
In my view, an ARIA grid for such a simple and beginner-oriented sample would not be the most appropriate here for either the readers or the imaginary end users. I feel like it goes against perhaps the most important rule of ARIA - No ARIA is better than Bad ARIA.
First, consider the audience for this code sample - beginner developers. Having them learn something as advanced as nuanced as the difference between native
s and ARIA grids could do more harm than good, and plant an idea in their minds that accessibility is harder than just using native, semantic markup. As you say, "[i]t took quite a bit of doing to pull off" - maybe not the best experience for first-time readers, who may also be very new to web development in general!
Second, consider the imaginary end users - my understanding is that ARIA grids are not encountered nearly as often as
s are in the real world, so many screen reader users (especially novice or part-time users) may find them to be unintuitive outside of very specific use cases compared to
s. Also think about people who only use their keyboard, but have varying degrees of (including full) vision. An ARIA grid has a single tab stop, whereas native tables let their contents dictate the tab stops, which can feel pretty strange without additional visible instructions. A table with individually focused contents, however, would not need any additional instructions (IMHO). I'm open to being wrong on this, though, if anyone has another perspective!
It sounds like this has been discussed quite a bit already in this thread and its predecessor ([1], [2]), so I suggest we pick the table approach and move forward.
Next steps
Just to help clarify my high-level thinking/strategy, my hope is that we can open up a PR that creates the most amount of benefit with the least amount of deltas. What you and @frastlin have done so far has been spot on as far as prototyping, so now the next step is to integrate it (which I'm happy to help with :)).
With that goal in mind, here are the major steps I'm thinking about to get this code sample integrated into the documentation website:

Create an updated version of the Final Result code sample found in the Wrapping Up section. This is what we've been doing in this thread so far.
Create a series of replacement code samples for the individual steps that lead up to that final result. For example, there are code samples under Inspecting the Starter Code (for the "Starter Code"), and Passing Data Through Props (near the end, with the link text "View the full code at this point").
Adjust the text of the tutorial to accurately reflect any significant changes in the code samples. I expect this to be pretty minimal, since the focus of the tutorial is really on the logic and React aspects, which I'm pretty sure will be unchanged.
Open a PR with the text changes and links to the updated CodePen samples. Ideally these CodePen samples would be transferred / forked to an "official" account of the React team upon approval by the reviewer(s).

As @bvaughn said above, it'd be good to reach out to the maintainers to make sure we're in alignment before doing steps 2, 3, and 4. If we don't hear from them on this thread in the next couple days or so I'll form a search party :D
Please let me know if any of this could be explained better, or if you have any other questions!

A grid component would be the best UX for this, but it's so difficult to make a quality aria grid, it's not worth the trouble.
In fact, it's so difficult to make an aria grid using React, that it's never been done before to my knowledge, and I've been looking very hard for a good solid example.
@jasonwebb your plan looks great.

I'm good with above @jasonwebb 👍
Yeah, I digressed regarding the aria grid (wish I could somehow conveniently show what I have (it's behind a VPN atm). But I totally agree that would add too much complexity for the simple tic tac toe example (it is quite complicated to pull off at least the way I went about it).
So I agree and appreciate you're taking the ball on it Jason!

A grid component would be the best UX for this, but it's so difficult to make a quality aria grid, it's not worth the trouble.
In fact, it's so difficult to make an aria grid using React, that it's never been done before to my knowledge, and I've been looking very hard for a good solid example.
@jasonwebb your plan looks great.

Sorry, to belabor the web-aria data grid thing, but, I'm curious if the web aria data grid examples work as a basline: https://www.w3.org/TR/wai-aria-practices/examples/grid/dataGrids.html @jasonwebb ?

The WAI-ARIA Authoring Practices guide is a great resource, and yes, that is a nice starting point when building out ARIA grids. However, from an education standpoint, I feel that the additional complexity of the ARIA grid pattern in terms of interactions, JavaScript, and markup is not the best fit for the very first tutorial that new React developers (who may also be new developers in general) are exposed to.
We'd have to introduce relatively difficult concepts like the roving tabindex, and potentially touch on basic screen reader usage so that the reader can actually experience and verify that their copy is fully working as expected. All things considered, it feels like using an ARIA grid in this scenario would require adding complexity to the code and the narrative documentation, which takes away some of the focus on the actual core intent - the React aspects. I'm also concerned about the possibility of planting an idea in the reader's mind that accessibility is complicated (perhaps more complicated than learning React), when it really doesn't need to be.
When it comes to screen reader support, I agree with both jessebeach an StommePoes - ARIA grid support has been improving, but native
s are still way better. Again, check out the #1 rule of ARIA usage: No ARIA is better than Bad ARIA.

Grids are becoming expected by screen reader users, as google sheets, gmail, and other major applications use them. If it was as easy to make a grid as it is to make a table, then I would recommend to make a grid. But it's over 500 lines of code to make an aria grid, and only 20 or so lines to make a table. If we were using an existing grid component in React with those 500 lines already done, then I would say go ahead and use it, but newbies don't know about custom components at this point. So use a table element please.

I'm waiting for the day that screen readers are no longer required.  They are expensive and a pain to learn even if you are a sighted user!  I dream of the day that voice recognition/synthesis can be used to make a "hands free" UI that would benefit all users including the blind.  I realize there are security concerns with a UI that "listens too much" but our iphones do that  :-) (my apologies, I just had to interject)


Getting Holder Name

Hi how are you. Please tell me can i get holder name using this framework and how it will retrieve.?
Thanks

@safyan unfortunately this functionality is not supported. Please see https://github.com/card-io/card.io-iOS-SDK/issues/111 for more details. Thanks.


Roll Flutter Engine from 73cc3fb451fd to e77599460311 (1 revision)

https://github.com/flutter/engine/compare/73cc3fb451fd...e77599460311
2023-08-29<EMAIL_ADDRESS>Clean up engine repo Dart code (flutter/engine#45203)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC aaclarke@google.com,rmistry<EMAIL_ADDRESS>on the revert to ensure that a human
is aware of the problem.
To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Commit queue failed; closing this roll.


phantomjs2 - set User-Agent problem

Change rasterize.js to add user agent before open page:
///////////////////////////////
page.settings.userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.85.10';
page.open(address, function (status) {>
///////////////////////////////
Try to get screenshot of http://www.ivory.co.il/
Error "Unable to load the address!" returned. PhantomJS 1.9.7 works.
System: Linux CentOS 6.5 x64
PhantomJS: commit eddb0db1d253fd0c546060a4555554c8ee08c13c  - Port the tests for mousedown, mouseup, and mousemove events.
https://github.com/ariya/phantomjs/issues/12439

Due to the lack of a concrete follow-up possibility, this issue will be closed.


Plot surface into variable with out showing result

Hi @marcomusy ,
I'm trying to plot a surface mesh into a variable/pillow-image/mumpy-array that I can post-process. I saw vedo.Plotter() has two functions .show() and .screenshot(). When calling show() from a juypter notebook, the result is immediately shown. I was now wondering if it is possible to draw a plot of a surface without showing it and retrieving the plot in a numpy array or Pillow Image instead.
Background: I would like to have the screenshot in a variable and build some stuff around before showing it, similar to stackview.insight() but with surfaces instead of images...
Any hint is welcome. Thanks!
Best,
Robert

Hi Robert,
Sure! Here goes an example script using offscreen and asarray keywords in Plotter class:
from vedo import Plotter, Axes, Sphere

plt = Plotter(offscreen=True, size=(1000,1000))
sph = Sphere().lw(1)
axes = Axes(sph)
arr = plt.show(sph, axes).screenshot(asarray=True)
print("arr.shape", arr.shape)
plt.close()

# Read back test:
from vedo import Picture
Picture(arr).show(bg='black').close()

Hope this helps.

Amazing, thanks for the instant reply @marcomusy!
I had to add N=2 to Plotter(...) to prevent this error popping up:
[vedo.io.py:1716] ERROR: in screenshot(), rendering window is not present, skip.

Otherwise, it works like a charm!
import numpy as np
import stackview

def do_show(image, mesh, zoom:float = np.exp(1), azimuth:float = 0, elevation:float = 0, roll:float = 0):
    from vedo import Plotter
    plt = Plotter(offscreen=True, size=[600,400], N=2)
    plt.show(mesh, zoom=np.log(zoom), azimuth=azimuth, elevation=elevation, roll=roll)
    return plt.screenshot(asarray=True)

stackview.interact(do_show, np.ones((10, 10)), mesh, continuous_update=True)

https://user-images.githubusercontent.com/12660498/216772377-2ab3c2bc-051b-4b34-ab7f-538a231fbb8e.mp4
Big thanks again!

Nice :)

I had to add N=2 to Plotter(...) to prevent this error popping up:

I need to fix that bug :)

Uhm what about this:
pip install -U git+https://github.com/marcomusy/vedo.git

I added a new settings option, then you can do in jupyter:
from vedo import Plotter, Axes, dataurl, Mesh, settings

settings.backend_autoclose = False   # do not close Plotter after show()

def showme(color):
    mesh.rotate_x(25).color(color)
    plt.show()

mesh = Mesh(dataurl+"bunny.obj").color("green")
plt = Plotter(size=[200,200], axes=1)
plt.show(mesh)
print("shape =", plt.screenshot(asarray=True).shape)

for i in range(3):
    showme(i)

then you should be able to rewrite your original script as:

import numpy as np
import stackview
from vedo import Plotter, settings

settings.backend_autoclose = False    # do not close Plotter after show()

def do_show(image, mesh, zoom:float = np.exp(1), azimuth:float = 0, elevation:float = 0, roll:float = 0):
    plt.show(mesh, zoom=np.log(zoom), azimuth=azimuth, elevation=elevation, roll=roll)
    # or plt.render() # which is faster
    return plt.screenshot(asarray=True)

plt = Plotter(size=[600,400])  # not inside do_show() anymore!
plt.show(mesh)

stackview.interact(do_show, np.ones((10, 10)), mesh, continuous_update=True)

hope this makes sense!


Proposal: Add .editorconfig

This would make it easier to contribute as many editors support the use of .editorconfig (through plugins and whatnot). Will sort out things like line endings and indentation.

Bring it back!

@taylorotwell
https://github.com/symfony/symfony/blob/master/.editorconfig

It should already be on new installs.

Describe this file in the official documentation, why it is needed. In the off-documentation there is not a line about it, it's bad.

The file just ensure codes / editor configs and practices. It's just good for coding looking similar from dev to dev.


Fix  in usage string

Good catch! Please sign the CLA (see the checks section of this PR) so I can merge this. And don't worry about the Travis failure; it looks like it's due to something other than your change.

haven't found an easy way, feel free to take the suggestion and fix it in your own way

@strk It's very easy! Just click here:

done

Thank you! 🏆


Separate the voting submission and IPFS uploading process

First we verify and save the voting data to database
Run a background script which upload the not in IPFS data to IPFS
In fronted, if data is not stored in IPFS, show a DB icon @Popoulosss

IPFS icon disabled if data is not stored

preview


World Tracker shows Blank and Unable to assign Envoys after Patch <IP_ADDRESS> fixes

The world Tracker shows but it is empty for culture and science. I can click on them and they open up. Also when i get an envoy, it does not allow me to assign them to a city state. Last night i had 8 of them and the only envoys assigned were the ones i completed a city quest for. This was a rise and fall expansion game I was playing.

part of #283


Support LDAP queries against bundle meta-data

There is a requirement to be able to start bundles based on the result of LDAP queries against a bundle's embedded meta data (properties).
The OSGi spec seems to already support this capability (i.e. matching based on a map of key/value pairs) within its Filter interface, which CppMicroServices has implemented as LDAPFilter.
I am proposing that a general "property" class be created, of which ServiceProperties would derive. LDAPFilter The general property class will insulate CppMicroServices users from how the framework manages all forms of properties (i.e. service, framework, bundle).
@CppMicroServices/collaborators A google doc detailing the functional design and requirements will soon follow for review.
This isn't required to be in 3.0, but would need to be in a point release (e.g. 3.x.y) soon after 3.0.

fixed in PR #76


Upgrade to  0.96.1b3 from 0.96.0b3 not working

rpi4, 4gb

arch
armv7l

dev
false

docker
true

hassio
true

os_name
Linux

python_version
3.7.4

timezone
Europe/London

version
0.96.0b3

virtualenv
false

19-07-19 07:11:01 ERROR (SyncWorker_14) [hassio.docker.interface] Can't install homeassistant/raspberrypi4-homeassistant:0.96.1b3 -> 404 Client Error: Not Found ("manifest for homeassistant/raspberrypi4-homeassistant:0.96.1b3 not found").
19-07-19 07:11:01 WARNING (MainThread) [hassio.homeassistant] Update Home Assistant image fails

solved in a hour

thanks!


Mouse Offset in Brain Plot

Description of the problem
I raised this subject two days ago in Discourse group:
https://mne.discourse.group/t/problem-with-stc-plot-why-does-the-mouse-have-a-variable-offset-on-the-brain-image-plot/8648
I am new to NME and Dipoles, so I hesitate to post this here, fearing I may be overlooking some simple transform error.
The problem is that my mouseclicks on the brain plot create dipoles in locations offset from the mouse, and the offset is not constant.  Attached ExhibitB.png and ExhibitC.png show the offset from clicking at two locations and the appearance of the Orange and Green bubbles.  In general, the further to the right I clicked, the larger the horizontal offset.  The vertical offset remained constant, I think.

DisplayOffsetDemo.txt
Steps to reproduce
...
fwd = mne.make_forward_solution( evoked.info, trans=None, src=src, bem=bem, verbose=True )
inv = mne.minimum_norm.make_inverse_operator(evoked.info, fwd, cov, verbose=True)
stc = mne.minimum_norm.apply_inverse(evoked, inv)
brain = stc.plot(subjects_dir=subjects_dir, initial_time=0.0, hemi='lh', views="medial")
...

The python contents of the minimal Jupyter notebook is attached (DisplayOffsetDemo.txt).
The notebook kcannot be attached - what format is convenient for you?  The system response
could be useful to you, but is obviously missing from this listing.

Link to data
Somewhat cumbersome to reduce the data, the full size is around 1.3GB.
If deemed helpful, I'll find a way to reduce the data and repeat the process with a smaller set of epochs
Expected results
Dipole 'bubble' should be created where I clicked the mouse on the brain plot.
Actual results
Dipole bubble appears at considerable offsets away from the click location.
Additional information
I am using Ubuntu 22.04, and MNE 1.6.1.
I believe I am not using any GPU.  The machine has an Nvidia 1660 card, but it is not used for the diplays, nor is it configured to be used in any way I can tell.
However, the setup on my system must be wrong, as it produces graphics artefacts that cannot be common.
(see Exhibits "A" and "D" attached above)

Further, a similar effect is seen by running the same notebook on a macOS M1 machine, with OS 14.4.1.
That Mac instance is using MNE 1.6.1 as well, and "pysvistaqt" as backend.
I believe the Ubuntu machine has pyvistaqt, but I must admit I am not entirely sure, and don't know how to find out.
See last attachment "OffsetMacOS_pyvistaqt3d".

What is your mne sys_info? It's possible this is a bug with PyQt5 and HiDPI (though it's more common on macOS than Linux)

Thank you for the query; these are my two environments:
::: MacOS :::
Platform             macOS-14.4.1-arm64-arm-64bit
Python               3.9.6 (default, Feb  3 2024, 15:58:27)  [Clang 15.0.0 (clang-15<IP_ADDRESS>)]
Executable           /Users/edwald/python_venvs/mne/bin/python3
CPU                  arm (8 cores)
Memory               16.0 GB
Core
├☑ mne               1.6.1 (latest release)
├☑ numpy             1.26.4 (OpenBLAS 0.3.23.dev with 8 threads)
├☑ scipy             1.12.0
├☑ matplotlib        3.8.3 (backend=module://matplotlib_inline.backend_inline)
├☑ pooch             1.8.0
└☑ jinja2            3.1.3
Numerical (optional)
├☑ sklearn           1.4.1.post1
├☑ nibabel           5.2.0
├☑ nilearn           0.10.3
├☑ pandas            2.2.0
└☐ unavailable       numba, dipy, openmeeg, cupy
Visualization (optional)
├☑ pyvista           0.43.3 (OpenGL 4.1 Metal - 88 via Apple M1)
├☑ pyvistaqt         0.11.0
├☑ vtk               9.3.0
├☑ qtpy              2.4.1 (PyQt6=6.6.1)
├☑ pyqtgraph         0.13.4
├☑ mne-qt-browser    0.6.2
├☑ ipywidgets        8.1.2
└☐ unavailable       ipympl, trame_client, trame_server, trame_vtk, trame_vuetify
Ecosystem (optional)
└☐ unavailable       mne-bids, mne-nirs, mne-features, mne-connectivity, mne-icalabel, mne-bids-pipeline
::: Ubuntu 22.04  :::

mne.sys_info()
Platform             Linux-6.5.0-25-generic-x86_64-with-glibc2.35
Python               3.11.0rc1 (main, Aug 12 2022, 10:02:14) [GCC 11.2.0]
Executable           /home/edwaldt20ni/VirtualEnvs/neweeg/bin/python
CPU                  x86_64 (12 cores)
Memory               62.6 GB

Core
├☑ mne               1.6.1 (latest release)
├☑ numpy             1.26.4 (OpenBLAS 0.3.23.dev with 12 threads)
├☑ scipy             1.12.0
├☑ matplotlib        3.8.3 (backend=QtAgg)
├☑ pooch             1.8.1
└☑ jinja2            3.1.3
Numerical (optional)
├☑ sklearn           1.4.1.post1
├☑ nibabel           5.2.0
├☑ nilearn           0.10.3
├☑ pandas            2.2.0
└☐ unavailable       numba, dipy, openmeeg, cupy
Visualization (optional)
├☑ pyvista           0.43.3 (OpenGL 4.5 (Core Profile) Mesa 23.2.1-1ubuntu3.1~22.04.2 via llvmpipe (LLVM 15.0.7, 256 bits))
├☑ pyvistaqt         0.11.0
├☑ vtk               9.2.6
├☑ qtpy              2.4.1 (PyQt6=6.6.1)
├☑ pyqtgraph         0.13.3
├☑ mne-qt-browser    0.6.1
├☑ ipywidgets        8.1.2
└☐ unavailable       ipympl, trame_client, trame_server, trame_vtk, trame_vuetify
Ecosystem (optional)
└☐ unavailable       mne-bids, mne-nirs, mne-features, mne-connectivity, mne-icalabel, mne-bids-pipeline

If deemed helpful, I'll find a way to reduce the data and repeat the process with a smaller set of epochs

Can you try with this snippet (will download ~1.5GB):
>>> import mne
>>> data_path = mne.datasets.sample.data_path(verbose=True)
>>> stc = mne.read_source_estimate(data_path / "MEG" / "sample" / "sample_audvis-meg-eeg-lh.stc", subject="sample")
>>> stc.plot()

For me it produces something that interacts as expected, does it work for you?

Not quite:
I haven’t had opportunity to test this on the Ubuntu box, but here’s what happens on the Mac.
I don’t know why it’s looking for an -fsaverage- file
(mne) edwald@temmi ~ % python
Python 3.9.6 (default, Feb  3 2024, 15:58:27)
[Clang 15.0.0 (clang-15<IP_ADDRESS>)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

import mne
data_path=mne.datasets.sample.data_path(verbose=True)
Downloading file 'MNE-sample-data-processed.tar.gz' from 'https://osf.io/86qa2/download?version=6' to '/Users/edwald/mne_data'.
/Users/edwald/python_venvs/mne/lib/python3.9/site-packages/urllib3/init.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
warnings.warn(
100%|█████████████████████████████████████| 1.65G/1.65G [00:00<00:00, 23.3TB/s]
Untarring contents of '/Users/edwald/mne_data/MNE-sample-data-processed.tar.gz' to '/Users/edwald/mne_data'
Download complete in 01m19s (1576.2 MB)
stc=mne.read_source_estimate(data_path / "MEG" / "sample" / "sample_audvis-meg-eeg-lh.stc", subject="sample")
stc.plot()
Traceback (most recent call last):
File "", line 1, in
File "/Users/edwald/python_venvs/mne/lib/python3.9/site-packages/mne/source_estimate.py", line 743, in plot
brain = plot_source_estimates(
File "", line 12, in plot_source_estimates
File "/Users/edwald/python_venvs/mne/lib/python3.9/site-packages/mne/viz/_3d.py", line 2398, in plot_source_estimates
subjects_dir = get_subjects_dir(subjects_dir=subjects_dir, raise_error=True)
File "/Users/edwald/python_venvs/mne/lib/python3.9/site-packages/mne/utils/config.py", line 475, in get_subjects_dir
subjects_dir = _check_fname(
File "", line 12, in _check_fname
File "/Users/edwald/python_venvs/mne/lib/python3.9/site-packages/mne/utils/check.py", line 263, in _check_fname
raise FileNotFoundError(f'{name} does not exist: "{fname}"')
FileNotFoundError: subjects_dir does not exist: "/Users/edwald/mne_data/MNE-fsaverage-data"
data_path
PosixPath('/Users/edwald/mne_data/MNE-sample-data')

Argh sorry that last line in the MWE should be:
>>> stc.plot(subjects_dir=data_path / "subjects")

Thank you -
the plot appears, but I can only get new dipole bubbles on the brain if I click the mouse on the extreme right edge
Ie. the V1 area and further up the edge.  Then I get the bubbles on the lower edge of the brain.  Any clicks further inwards on the brain do not visibly produce anything, probably because the bubble falls off the left edge of the brain plot. ( I have not rotated the plot at all).

Okay I was able to replicate on my macOS machine -- can you see if being on this branch of PyVistaQt fixes things for you on mac at least?
https://github.com/pyvista/pyvistaqt/pull/565
And maybe we'll get lucky and it'll also fix things on Linux.

I’d happily do that, but I don’tknow how. Just clone a repository and build?best regardsT. EdwaldOn 22 Apr 2024, at 16:40, Eric Larson @.***> wrote:
Okay I was able to replicate on my macOS machine -- can you see if being on this branch of PyVistaQt fixes things for you on mac at least?
pyvista/pyvistaqt#565
And maybe we'll get lucky and it'll also fix things on Linux.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

You should be able to do pip install git+https://github.com/larsoner/pyvistaqt.git@pyqt6 to install my branch

This WORKS!  Or, at least- the dipole bubble now appears exactly where I click with the mouse.
Thank you very much for this wizardry.  Brilliant!
Tomorrow I will have the opportunity to test this on Ubuntu as well, or anything else I can contribute.

The code works correctly on Ubuntu as well, with your fix.
Both my own code and your example above.
Many thanks.


Setup CI

What type of PR is this?

Uncomment one (or more) /kind <> lines:

/kind bug

/kind cleanup

/kind design

/kind documentation

/kind failing-test

/kind feature

Any specific area of the project related to this PR?

Uncomment one (or more) /area <> lines:

/area build

/area tests

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #9
Special notes for your reviewer:

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

Needs approval from an approver in each of these files:

OWNERS

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

LGTM label has been added.  Git tree hash: 91c4f09471ffa4dd7280b16d390071df900d265b

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

Needs approval from an approver in each of these files:

OWNERS [Issif]

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

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

Needs approval from an approver in each of these files:

OWNERS [Issif,fjogeleit]

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


Quantum Circuit EventEmitters not being removed

Bug Description
circuitReady listeners are not being removed and eventually exceed the limit.
Steps to Reproduce Bug

Running a circuit multiple times whilst in the same Node-RED session will eventually result in the following warning message:
MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 circuitReady listeners added to [EventEmitter].
Expected Behaviour & Actual Behaviour
Expected behaviour is that the listeners should be removed once they are no longer required.
Actual behaviour is that the listeners are never being removed.
Additional Information
Perhaps replacing event.on('circuitReady', ... with event.once('circuitReady', ... in quantum-circuit.js may be the easiest solution? This ensures that the listener is only triggered once and is then removed. However, I'm not sure how this code works so I don't know if it'll work perfectly. Also, only one event emitter is being created: const quantumCircuitReady = new EventEmitter();. This single event emitter is being used for every quantum circuit node, rather than each node having its own EventEmitter object. Perhaps it would help to move this object creation into the QuantumCircuitNode function to avoid this.
System Information

Node.js Version: v16.6.2
Operating System: Arch Linux (5.13.9)

Change event.on('circuitReady', ... with event.once('circuitReady', ... seems to fix this issue indeed


Not able to read signature packet for pgp signed message

I am trying to verify signature of a file which is signed by gpg. The keyid printed by the below code is different than shown for  gpg --list-packets signed.txt   Attaching test files as well to verify the issue.
My code for the same:
public static void verifyFile(
            InputStream in,
            PGPPublicKey publicKey)
            throws Exception
    {
        Security.addProvider(new BouncyCastleProvider());
        JcaPGPObjectFactory pgpFact = new JcaPGPObjectFactory(PGPUtil.getDecoderStream(in));

        PGPCompressedData compressedData = (PGPCompressedData)pgpFact.nextObject();
        InputStream inputStream = compressedData.getDataStream();
        pgpFact = new JcaPGPObjectFactory(PGPUtil.getDecoderStream(inputStream));
        PGPOnePassSignatureList list = (PGPOnePassSignatureList)pgpFact.nextObject();
        System.out.println(list.size());
        PGPOnePassSignature ops = list.get(0);
        System.out.println(ops.getSignatureType());
        ops.init(new BcPGPContentVerifierBuilderProvider(), publicKey);

        PGPLiteralData p2 = (PGPLiteralData)pgpFact.nextObject();
        System.out.println("Literal Data: " + p2.getFileName());
        InputStream dIn = p2.getInputStream();

        int ch;

        while ((ch = dIn.read()) >= 0) {
            ops.update((byte) ch);
            System.out.println((char)ch);
        }

        if (ops != null) {
            PGPSignatureList signatureList = (PGPSignatureList) pgpFact.nextObject();
            PGPSignature signature = signatureList.get(0);
            signature.init(new BcPGPContentVerifierBuilderProvider(), publicKey);

            if(ops.verify(signature)) {
                System.out.println("Verified here");
            }
            signature.init(new JcaPGPContentVerifierBuilderProvider().setProvider(new BouncyCastleProvider()), publicKey);
            int t;
            while ((t = in.read()) >= 0) {
                signature.update((byte) t);
            }

            System.out.println("KeyID:" + signature.getKeyID());
            System.out.println("Hash Algo: " + signature.getSignatureType());
            if (signature.verify()) {
                System.out.println("Sign Verified");
            }
        }
    }

signed.txt
public-key.txt

Closing because I was doing it wrong.


When creating the delegated account, no information is displayed if the NODE_URL was entered incorrectly or not at all

When creating the delegated account, "The NODE_URL field is required" should appear if the NODE_URL field has not been filled out.
Even if the NODE_URL was entered incorrectly, an error message should appear.

@garm01 harvesting was rebuilded. Please verify if it's fixed. If not please reopen or create seperate bug.


Update Presto jvm.config

Update the jvm.config in accordance with the current recommended JVM
configuration for Presto.
cc @mattsfuller @ChethanUK

@aniket486 could you please take a look?


Remove algorithms module and split out generators, rankers, finalizers.

Summary

Create submodules for generators, rankers, finalizers, and engines.
Move fallback algorithm to finalizers.
Remove algorithms module.
Create and test default ranker that does not re-order proposed matches.
Create and test main matching engine that currently uses only the fallback finalizer.
Also changes the Gitpod startup to install frontend dependencies using npm ci.

Future Work

Create and test an example generator.
Create stubs for generators that the interns will build.
Create stubs for rankers that the interns will build.
Refactor the flow to use a matching engine instead of the compute_fallback_matches() task.
Create a pipeline.transform module.
Move the pipeline matching task to the transforms module.
Move filters and conversions to the transforms module

This provides a more clean view of this refactor:


glib/variant: add some more safe wrappers

This adds manual wrappers for the following functions:

g_variant_is_normal_form
g_variant_is_object_path
g_variant_is_signature

It completes wrapping all the existing g_variant_is_* methods,
except for g_variant_is_floating which is not useful in Rust.
Closes: https://github.com/gtk-rs/gtk-rs-core/issues/622

Rebased according to review suggestions, CI is green.


Hygieia-Jenkins publisher question

This is very basic question.
In this push based approach, I understand that we configure the Hygieia server where Jenkins needs to publish to. But it appears to be ONE static server value. Can the publish be done to a Hygieia host dynamically (mentioned as a parameter) as part of the publish code itself?
just curious

@email2niranjan  are you using free style or pipeline jobs.  Can you explain more on "ONE static server value". If you mean environment value like "DEV","QA"..etc, you can always pass dynamic variables in all fields.

where am coming from is.. what if in our enterprise, we do not want to share the Hygieia host and we have separate hosts for each application

@email2niranjan  You should be able to pass a dynamic value via a build variable, I have not tried though. It should work.

I learnt through other history posts/issues that this is not possible. Hence closing this ticket.
But I did find a way to use cURL POST commands to post statuses to apis. Hence closing this issue.


U+202C Unicode error

When building a PDF document, some of our customer datasets are receiving an error. However it's not all customer datasets, I cannot figure out what exactly is yielding this error.  This only happens with some customer datasets (we pull a List in Java of customer name, email, phone number and then create rows based on each element in that list).
The U+202C character from what I've understood through Googling is a character to determine reading direction of characters (think right to left for Arabic etc.). But at no point in our code do we reverse the orientation of text, we are using basic configuration.
java.lang.IllegalArgumentException: U+202C ('afii61573') is not available in the font Helvetica, encoding: WinAnsiEncoding
	at org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:428)
	at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:333)
	at org.apache.pdfbox.pdmodel.PDPageContentStream.showTextInternal(PDPageContentStream.java:514)
	at org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStream.java:476)
	at org.vandeseer.easytable.drawing.DrawingUtil.drawText(DrawingUtil.java:20)
	at org.vandeseer.easytable.drawing.cell.TextCellDrawer.drawText(TextCellDrawer.java:106)
	at org.vandeseer.easytable.drawing.cell.TextCellDrawer.drawContent(TextCellDrawer.java:57)
	at org.vandeseer.easytable.TableDrawer.lambda$new$0(TableDrawer.java:69)
	at org.vandeseer.easytable.TableDrawer.drawRow(TableDrawer.java:200)
	at org.vandeseer.easytable.TableDrawer.drawWithFunction(TableDrawer.java:183)
	at org.vandeseer.easytable.TableDrawer.lambda$drawPage$1(TableDrawer.java:91)
	at java.base/java.lang.Iterable.forEach(Iterable.java:75)
	at org.vandeseer.easytable.TableDrawer.drawPage(TableDrawer.java:90)
	at org.vandeseer.easytable.TableDrawer.draw(TableDrawer.java:157)
// THIS IS WHERE OUR INTERNAL CODE STARTS:
	at com.croogloo.metadata.CGCrewList.generateCrewListPDF(CGCrewList.java:344)
	at com.croogloo.webAPI.PersonAPI_V2.generateCrewListPDF(PersonAPI_V2.java:348)

Here is the line of code that yields the error:
TableDrawer.builder().table(table).startX(50.f).endY(50.f).build().draw(() -> document,
          () -> new PDPage(PDRectangle.A4), 25.f);

I would appreciate any help on figuring out how to resolve this error. Thank you so much!

Hi @SkylerWittman,
The problem is not an issue of the library itself, but with the font used. You would get the exact same error if you only used PDFBox, but not easytable.
I would recommend either filtering out special chars like that one programmatically or alternatively asking around on stackoverflow (for instance) about what font to use.
Hope this helps
Stefan

Hi @vandeseer,
Thank you for your answer. I didn't think about stripping the character out, I don't know if that would have any negative repercussions (I mean, it doesn't work currently so not much more negative than that!)
I've tried swapping to Times font and got the same problem, I will try the character stripping approach.
Cheers!

Hi @SkylerWittman
I've the same problem with greek symbols like "delta", "gamma", etc. or superscript and subscript numbers (⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ), but, as told by @vandeseer it's not an issue of the library but, I suppose, a problem of the PDFBox.
Did you find a method, a solution for the problem or any suggestion?
Thanks in advance,
Bye

Hey @alexanderthorn. I stopped working on this project so I have no updates sadly. I'll leave it open in case you or someone else solves it.
Good luck


column selection, editing, deleting, copying and pasting text as rectangles etc

Can it do typical column selection, editing, deleting, copying and pasting text as rectangles etc？

not support now


Alderney St Anne duplicate entry

Alderney St Anne is entered in the Gazetteer against both CHI and ALD. Please move links from CHI entry to the ALD entry na dremove the CHI entry.
Geoff

Done


"Identify the user by their Principal ID" is confusing/misleading

In this paragraph:

In the Principal ID box, provide the Azure AD object ID of the user, group, or application that you want to be granted permission to the managed resource group. Identify the user by their Principal ID, which can be found at the Azure Active Directory users blade on the Azure portal.

This says "Identify the user by their Principal ID". I don't see a field called "Principal ID" anywhere and this could lead to confusion if users think they need to use Principal ID to fill out this field of the form. Maybe we could say something like "Select a user from the list at the Azure Active Directory users blade and copy the Object ID value of that user.

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

ID: 0dfa720e-825c-36d2-1ff2-3c26316410d2
Version Independent ID: e0b78d69-cda7-fd87-af0f-6749e676d3d0
Content: Configure a managed application plan
Content Source: articles/marketplace/azure-app-managed.md
Service: marketplace
Sub-service: partnercenter-marketplace-publisher
GitHub Login: @macerru
Microsoft Alias: macerr

Thanks for the feedback! We are currently investigating and will update you shortly.

The Principal ID is also known as the Object ID on this blade. I have a pending PR to clarify this but will reach out to the doc author to see what changes should be made.


Fix failing boilerplate checks

Fix two files that were failing the boilerplate check (if a .py file is to have a shebang on the first line, it must be executable)

I will recreate with the correct commits. I included an extra one.


obfs4: init at 0.0.10, use in tor-browser-bundle's, tor service

(Alt PR title: OBFS4 Service Pack)
Introduction and Motivation for this change
This enables obfs4 for use in our tor service
and our tor-browser-bundle!
This is important because
(source)[https://2019.www.torproject.org/docs/bridges.html.en]:

Sadly, pluggable transports are not immune to detection, if a censor
is given enough time. In the past, we promoted obfs and obfs2 as safe
transports. These are now deprecated and were replaced by obfs3,
scramblesuit, fte, and obfs4.

Happily obfs4proxy supports scramblesuit too, as well as the other
obfs transports, which is particularly important for interacting
with peers that don't "yet" support obfs4.
In the tor and our bundle, this replaces the python-based obfsproxy
and makes it possible to replace obfs4proxy in tor-browser-bundle-bin
instead of patchelf'ing.
(we may wish to use the shipped binary anyway for fingerprinting
reasons, but since we patchelf it anyway I'm not sure if
there's good cause for using the version provided?)
For our built-from-source bundle this means
these transports are newly available for use.
Testing
I have not tested the tor module with this "yet",
help appreciated and especially any feedback from
folks using the module in a way this would impact :).
I've tested the browser bundles in a few bridge configurations
and am able to use obfs4 bridges and such.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

cc @oxij

The binary bundle already uses obfs4, I prefer it to continue using bundled deps wherever possible. Otherwise, LGTM.

Thank you :)


Improve checkout load time making two setup calls in parallel

Closes #374

What I did
This PR will load order and organization in parallel and wait for them before deciding if the token can read the organization and the order being valid to open the checkout.
How to test

Checklist

[x] Make sure your changes are tested (stories and/or unit, integration, or end-to-end tests).
[x] Make sure to add/update documentation regarding your changes.
[x] You are NOT deprecating/removing a feature.

:tada: This PR is included in version 4.1.5 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


improvement: Move classpath to a separate request

More context https://github.com/JetBrains/bazel-bsp/pull/519#issuecomment-1926710910

My first reaction was, that it's nice that we can defer the classpath request until it's really needed.
Yet, I wonder what the potential impact might be, when we move the scalac options up into the buildTargetData, as you currently proposed by your change? Technically, they are not as important, that they need to be  provided that early.
Compilation is done by the build server, so the client only needs the options for other probably optional or advanced stuff. Calculating scalac option may include some potential heavy work, e.g. when there are compiler plugins involved. With your change, the build client will trigger this with the buildTargets request, which is very early and can't be omitted.
The other thing is that the javac options now seem to end in the JvmBuildData, which is technically independent of the Java extension. This doesn't make sense to me.
I propose the keep the dedicated javac- and scalac options requests. The extraction of the classpath by itself should already improve the responsiveness.

However, I don't think there is a needed to only send scalacOptions in a completely separate request. I think it actually adds complexity.

I propose the keep the dedicated javac- and scalac options requests. The extraction of the classpath by itself should already improve the responsiveness.

I kind of agree here. To get the scalac options we need to resolve the compiler plugins which can be slow or fail (network issues). At the same time, ScalaBuildTargetData contains the jars of the scala-library and compiler, which already triggers the resolution. So adding the scalac options to ScalaBuildTargetData does not change anything in practice. (In sbt there is one global resolution for each project, that resolves the compiler, the scala-library, the compiler plugins, and the libraries)
Ideally I think we should  remove the jars from ScalaBuildTargetData and keep the scalacOptions out of it: the ScalaBuildTargetData should not trigger any resolution.

I propose the keep the dedicated javac- and scalac options requests. The extraction of the classpath by itself should already improve the responsiveness.

Sure, that was the other option I considered, but this seemed safer in terms of compatibility and migration. Removing classpath from scalacOptions would break binary compatibility, so I wasn't sure how to go around it.
Any ideas around there

Ideally I think we should remove the jars from ScalaBuildTargetData and keep the scalacOptions out of it: the ScalaBuildTargetData should not trigger any resolution.

Metals doesn't use jars neither does scala-cli, so this should be safe to remove,  but not sure where it should end up?
Any ideas about not breaking compatibility here? Or just deprecate it to be removed in 3.x ?

We could also have resolveClasspathRequest capability for both client and server so that they would know to send the empty deprecated fields. :thinking:

Metals doesn't use jars neither does scala-cli, so this should be safe to remove, but not sure where it should end up?

I am pretty sure that IntelliJ needs it. Can you confirm @jastice?

Any ideas about not breaking compatibility here? Or just deprecate it to be removed in 3.x ?

Probably we need to deprecate it to be removed in 3.x.

From a compatibility perspective, the classpath field can just be kept empty (not ideal but better that waiting for a new major version, IMHO). The fact that the classpath request should be used (instead) can be either derived from the implemented BSP version or communicated via a capability. In other words, if you're going to implement and support the new classpath request, just leave the deprecated classpath field empty. The bsp4j impl could even pre-initialize it.

Ok, I changed to just add the new method. Should we add a capability?

Ok, I changed to just add the new method. Should we add a capability?

I would say yes.

Ok, I changed to just add the new method. Should we add a capability?

I would say yes.

Done!

Can you a bit more specific in what exact cases the classpath is going to be used? Is it four compilation (only)? Is it also supposed to be used at runtime? It should, as it will most probably break the idea of a run classpath most build tools implement in some way?

Can you be a bit more specific in what exact cases the classpath is going to be used? Is it for compilation (only)? Is it also supposed to be used at runtime? It shouldn't, as it will most probably break the idea of a run classpath most build tools implement in some way.

We currently mostly use classpath for the presentation compiler, so that would be compile classpath. Should we have the two here? Although, we get runtime classpath in the jvmEnvironment already

Can you be a bit more specific in what exact cases the classpath is going to be used? Is it for compilation (only)? Is it also supposed to be used at runtime? It shouldn't, as it will most probably break the idea of a run classpath most build tools implement in some way.

We currently mostly use classpath for the presentation compiler, so that would be compile classpath. Should we have the two here? Although, we get runtime classpath in the jvmEnvironment already

Thanks for the clarification. I don't think we need a extra run classpath here. But I'm a bit unsure if we should rename the classpath to compileClasspath` for clarity.

Can you be a bit more specific in what exact cases the classpath is going to be used? Is it for compilation (only)? Is it also supposed to be used at runtime? It shouldn't, as it will most probably break the idea of a run classpath most build tools implement in some way.

We currently mostly use classpath for the presentation compiler, so that would be compile classpath. Should we have the two here? Although, we get runtime classpath in the jvmEnvironment already

Thanks for the clarification. I don't think we need a extra run classpath here. But I'm a bit unsure if we should rename the classpath to compileClasspath for clarity.

That makes sense, @adpi2 what do you think?

Thanks for the clarification. I don't think we need a extra run classpath here. But I'm a bit unsure if we should rename the classpath to compileClasspath for clarity.

I agree. Also I think we should rename them jvmCompileClasspath and jvmCompileClasspathProvider to make it clear they belong to the JVM extension.

Metals doesn't use jars neither does scala-cli, so this should be safe to remove, but not sure where it should end up?
I am pretty sure that IntelliJ needs it. Can you confirm @jastice?

Yes, IntelliJ Scala BSP implementation does use jars

Thanks for the clarification. I don't think we need a extra run classpath here. But I'm a bit unsure if we should rename the classpath to compileClasspath for clarity.

I agree. Also I think we should rename them jvmCompileClasspath and jvmCompileClasspathProvider to make it clear they belong to the JVM extension.

Done!

Metals doesn't use jars neither does scala-cli, so this should be safe to remove, but not sure where it should end up?
I am pretty sure that IntelliJ needs it. Can you confirm @jastice?

Yes, IntelliJ Scala BSP implementation does use jars

I will skip it for this PR then.

Sorry for the delay, I was off for the last week. It should now be fixed, should we also wait for @jastice approve?

@jastice what do you think about merging it? Would be also useful to have an additional 2.2.x with this before the big changes hit. This would make it much easier to handle Bazel and Mill.

This would make it much easier to handle Bazel and Mill.

I think it would also improve sbt-bsp, but we might just not have witnessed these more complex builds there.

@jastice what do you think about merging it? Would be also useful to have an additional 2.2.x with this before the big changes hit. This would make it much easier to handle Bazel and Mill.

let's merge it!

Or could this somehow be handled in the bsp4j lib?

To this moment, we never had changes, which removed some necessary work from a request. So the client version was more or less ignored on the Mill server side.

We would need client capability for that too to make sure classpath is being used :thinking:
I think the plan would be:

Release 2.2.0-M2 with these changes
Test it out with Bazel BSP + Metals
If any issues arise fix them here
Add the client capability in the meantime

Anyone against the plan?

If we know, we need the client capability to properly implement it, why not add it before the next release? Otherwise, the servers need to assume that the client does or does not support it, which isn't ideal. But more importantly, such a prepared test-version of a server will not properly work for all regular clients. So, you could do these test only with dedicated servers and clients.

If we know, we need the client capability to properly implement it, why not add it before the next release?

Sure, that's probably the saner approach :sweat_smile: I revised the plan.

Raised here https://github.com/build-server-protocol/build-server-protocol/pull/656


Delete button position

In VS Code, the delete button is on the far right of the toolbar - after discussions with user this may come as a way to mitigate clicking by error on it. Should we do the same?

YES. YES. YES. I was looking for a solution for this only when I came across this post.

YES. YES. YES. I was looking for a solution for this only when I came across this post.

@ParasKoundal in the latest released version (2.1 and 3.1), you can now define custom left and right menus; see README.

Thanks a lot. Works Perfectly.


No LSP in dynamic routes

I can't seem to get any form of LSP support in routes like routes/greet/[name].tsx. I'm surprisingly not seeing mention of this issue anywhere. To be honest I haven't tried anything besides starting a project from scratch (in which LSP still did not work), but that's mostly because I can't think of any fixes.
If it helps:
Zed is my editor
I use an M2 Macbook Air

I'm not familiar with Zed. Is the Deno LSP or extension running there?


--watch option

Is there any way to watch for spec changes and re-run the tests automatically instead of running the command every time manually?

You can use nodemon for that.

Could you show us how we could use nodemon? I'm not sure which command to execute with nodemon - nodemon adonis test obviously doesn't work.

Yeah, but in that case we need to handle couple of things.

Do not re-run migrations hooked into runner.before and runner.after
Only re-run the test you are editing (I believe, that's how Karma watcher does it)

Feel free to share any more insights you have

Is there any way to watch for spec changes and re-run the tests automatically instead of running the command every time manually?

Hello @ignatevdev
Perhaps this can help you, a simple implementation with onchange, unfortunately requires the installation of the package but, if it is just a development dependency, I believe that it is still viable.
Install the onchange package:
 npm i onchange --save-dev

Create the script line in your package.json:
"scripts": {
    ....
    "test:watch": "onchange 'app/**/*.js' 'test/**/*.js' -- node ace test"`
    ....
}

Run npm run test:watch and finish.
Although the topic is old, it can help someone.
Programming with tests in real time is really great!


1% GPU usage and slow training times after unknown DSO update?

Tensorflow with CUDA was working fine. Cross-entropy loss was going to zero (CIFAR-10 and a very simple CNN), but training error stayed around the same as random chance. I mention this in case it may be related to my issue.
In between runs, not 5 minutes after it was just working, I mysteriously got this error message about my video driver:
kernel version 361.42.0 does not match DSO version 367.57.0
I never updated anything, so that's strange. I update my video driver using apt-get and the Ubuntu ppa repo, then restart. I didn't check what version the video driver was before the update but I assume it was 361.42?
The error message is gone, but training is now an order of magnitude slower with ~1% GPU usage and ~5% CPU usage. nvidia-smi indicates 90% memory usage, which means the model is in memory, but what before took ~0.4 seconds per batch is now taking 4+ seconds per batch.
I tried re-installing CUDA and cuDNN from official sources but no change.
CUDA bandwidth test and deviceQuery results normal.
Ubuntu 16.04
Tensorflow 0.10.0 (built from source w/ CC 3.5 and 5.0)
nvidia Quadro K2200
CUDA 8.0
cuDNN 5.1.5
Python 2.7

Did you upgrade your CUDA driver? It looks like it isn't new enough.

@aselle I did re-install the latest version of CUDA, 8.0.44 verified through nvcc --version.

this looks to be a configuration issue, this can be closed.


⚠ Bofrost.de has degraded performance

In 1c40ae3, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1772 ms

Resolved: Bofrost.de performance has improved in 9000370 after 10 minutes.


error: 'Leanplum/Leanplum-Swift.h' file not found

Error:
ios/Pods/Leanplum-iOS-SDK/LeanplumSDK/LeanplumSDK/Classes/Utilities/Vendor/SocketIO/Leanplum_SocketIO.m:47:9: fatal error: 'Leanplum/Leanplum-Swift.h' file not found
#import <Leanplum/Leanplum-Swift.h>

<EMAIL_ADDRESS>(but resolved 1.3.0)

Leanplum-iOS-SDK (4.1.0)

same problem here using RN 0.67.4, could you fix it?

I have the same issue.

This is an issue with cocoapods when using static linking, for pods that use mixed languages. You can link Leanplum dynamically, by adding the following code in Podfile:
dynamic_frameworks = ['Leanplum-iOS-SDK']
  pre_install do |installer|
    Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
    installer.pod_targets.each do |pod|
        if dynamic_frameworks.include?(pod.name)
          puts "Setting dynamic linking for #{pod.name}"
          def pod.build_type;
            Pod::BuildType.dynamic_framework
          end
        end
      end
  end

@AugustoAleGon Is this working for you?

@nzagorchev I got the same issue after upgrading and I can confirm the fix you commented worked for me

@nzagorchev yes. this works for me.

@nzagorchev can you update the documentation based on this solution? In react native most projects cannot use use_frameworks! as it's not fully supported yet. Therefore we need to specify individual pods as a specific build type i.e. Leanplum-iOS-SDK via the pre_install hook seen above or through a potential cocoapods plugin that unfortunately is maintained for newer versions of cocoapods. Now that 2.0.0 has been released, it now requires CleverTap-iOS-SDK pod. This will bring up subsequent compile time errors. This is due to build types cascade to their dependencies. CleverTap-iOS-SDK also depends on SDWebImage. So both of these additional pods will need to be added to the array seen in the above solution.


Button minTimeout

Just created the proposed feature for issue #22

Thanks for your PR! I restarted the build, maybe that helps. I would generally prefer this setting to be optional. Also it is important to cancel the $timeout manually on scope.$on('$destroy') as this otherwise might lead to strange bugs (see: http://www.bennadel.com/blog/2548-don-t-forget-to-cancel-timeout-timers-in-your-destroy-events-in-angularjs.htm).

Thank your for your feedback! I will update the timeout destroy part. What is the best practice for optional parameters? Or should I put the default to zero only?

Ideally the timeout part would not be executed at all, if the option is set to false.
Also you might want to rebase the upstream repo before pushing again. It seems like that some of the npm packages were not working anymore in their older versions, so I had to update them. Now the travis build should run again without issues.


please update the code to the new version of dart and flutter

I tried for a long an hour to solve your codes warning and deprecated API issues still didn't run at all. please update the code if you can

Hi @susanta96, can you show me your error ? because i don't see any error when i update my packages


112[FEATURE]

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Hi, can you provide me with more details on the feature request?

I will close this issue because no information has been provided


Allow using proxy with translation service

I can't add proxy server to the request configuration.

Thank your for your pr. The newest version had supported the request configuration.

beautiful, thanks a lot


rustc --target configuration in rust-project.json workspaces

Opening an issue to discuss the comment I made in https://github.com/rust-analyzer/rust-analyzer/pull/4784#issuecomment-640262242
(background for others):
At the moment, the stdlib syntax highlighting that happens in a Cargo.toml project is based on using the default rustc --target configuration (ie. the target_arch, target_os, and target_has_atomic=<foo> and other cfg items).
One of the uses of rust-project.json is being able to lay out a codebase that is being cross-compiled, and therefore the default rustc configuration isn't the one that will be used.
Some rust-project.json scenarios will involved a mixed set of targets (e.g. "host and target").  For those doing embedded (i.e. nostd) programming, aimed at something like a Cortex-M0, I think this also applies.
(current issue):
I think what's needed is a way to efficiently convey the compilation target configuration to rust-analyzer.
Providing every cfg flag, for every crate, is not a scalable solution (and isn't how rustc itself is interacted with.
So I would like to propose that the rust-project.json instead could take the --target <triple> information as part of the crate configuration (perhaps as a new, optional, member of Crate, and then use that to internally populate the set of cfg items that are used for processing the #[cfg(<foo>)] statements in the source code.
Much like how RA calls out to rustc for the default_cfg in Cargo.Toml projects, the process of setting up the ProjectWorkspace::Json could invoke rustc once per triple (rustc --print cfg --target <triple>) and then use those results for the setup of the crate.
(yes, this is also a volunteering to work on this)

I think so.  We should probably setup an issue to talk about target/config switching, though.

Let's close this since it seems fixed. Configuration switching is #6117.

Let's close this since it seems fixed. Configuration switching is #6117.


Comfy Math SDXL Resolution Dropdown node

Your question
I was looking for a way to expose the comfy math sdxl resolutions drop down selection into the Generation/Simple tabs using the swarm input dropdown node, but am not sure how to set this up.
Logs
No response
Other
No response

Er... what node?
Generally what you do for dropdowns is just convert Widget to Input, connect a SwarmInputDropdown, and empty out the values field (if the dropdown values are empty, it will autopopulate based on what you connect it to). Note that there's two outputs from SwarmInputDropdown, the magic empty one is able to connect anywhere when the normal one won't connect.


Flag to disable project creation

[ ] There is a flag to disable feature that will hide the UI elements and prevent the creation of projects and log this

Hi Di,
This is now ready for testing on dev, this is one that we'll need to disable for you so is one that we could show in the demo or we can turn this feature on/off for you when you're ready to test against the acceptance criteria.
Thanks


package.json, line 8:  concurrent should be replaced by concurrently

"concurrent" command is deprecated, the replacement is "concurrently"

Yep, thanks!


Cleanup issue list

Go through the issues in https://github.com/ros-industrial/ur_modern_driver/issues/18#issuecomment-158370977 and see which still apply and which can be closed if they haven't already been closed.

With the official deprecation of ur_modern_driver I've just closed all issues reporting problems with CB3 and e-series compatibility.
Issues still open either report issues with CB2 and Polyscope <= 1.8.x, or more general issues that would also affect CB2 users.


Grunt

What is this line for?
    grunt.registerTask('default', 'Testing out Grunt logging and task callbacks', function() {
        grunt.log.writeln('This is our first Grunt task!');
    });

Also? https://github.com/Chammz/bloc-jams-angular/blob/checkpoint-4-templates/Gruntfile.js#L86

I open the Pull Request to your branch with a fix, juts curious where the new code came from.


GPU is never available

Description
On the landing page, when I toggle "Select compute type" to "GPU", I receive the following error message: "There is no runtime available right now. Please change the compute type or try again later." This has happened multiple times over 3 weeks.

oh I see that this is already reported. closed.. https://github.com/aws/studio-lab-examples/issues/96


Add benchmarks for performance tuning

[ ] Decide on a benchmarking library that works well with xUnit
xunit.benchmark
NBench
xunit.performance
[ ] Develop a few representative schemas along with Chiron encoders/decoders
JSON Schema
Parsing the JSON Core Meta-Schema definition seems a good example
Swagger v2 JSON Schema makes for a good large case
Also need to test on a few small records with one or two fields.
[ ] Determine metrics by which to determine improvement

I'm leaning toward NBench at the moment. It requires an external runner, so it doesn't integrate directly with xUnit. Nonetheless, it seems to have some features, including memory and GC benchmarking. It's not quite idiomatic F#, though, so each benchmark needs to be implemented with an OO type. I've posted the work-in-progress into the add-benchmarks branch.

After more exploration, I've found BenchmarkDotNet which seems to be becoming the preferred benchmark tool. It works well integrated as part of an executable and allows for doing A/B testing.

I like BenchmarkDotNet, I've had nice experiences with it elsewhere.


02-client routing: remove GetLatestHeight from ClientState interface and add it to LightClientModule

Description

closes: #XXXX
Commit Message / Changelog Entry
type: commit message

see the guidelines for commit messages. (view raw markdown for examples)

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

[ ] Targeted PR against the correct branch (see CONTRIBUTING.md).
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
[ ] Code follows the module structure standards and Go style guide.
[ ] Wrote unit and integration tests.
[ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/).
[ ] Added relevant godoc comments.
[ ] Provide a commit message to be used for the changelog entry in the PR description for review.
[ ] Re-reviewed Files changed in the Github PR explorer.
[ ] Review Codecov Report in the comment section below once CI passes.

@chatton and I spent some time working on this PR today, addressing compiler errors and tests. All tests are now passing and we've added a new test helper to Endpoint: endpoint.GetClientLatestHeight
There is still places in which we need to cast: latestHeight := endpoint.GetClientLatestHeight.(clienttypes.Height) and still a couple of more places which can make use of this testing func.
I think the type casting/conversions will naturally resolve themselves when we remove exported.Height and use the concrete type alone when api is introduced.

 Quality Gate failed for 'ibc-go'
Failed conditions  29.4% Duplication on New Code (required ≤ 3%)
See analysis details on SonarCloud

I'm trying to understand the duplication meaning. I guess its flagging test files where some boilerplate code is duplicated. E.g. in malleate funcs where we mutate some values. But I think that's fine, I wonder if we can tweek the settings to not complain about this too much, or at least bump the %. It's not nice to see a red x on CI when we had gotten it green! 😢

 Quality Gate failed for 'ibc-go'
Failed conditions  29.4% Duplication on New Code (required ≤ 3%)
See analysis details on SonarCloud

I can tweak this. What value would be good to trigger when really needed and but avoid false positives?

Excellent work y'all 💪 Big thanks to @damiannolan and @chatton for muscling through this one!! Happy to see this merged, left a note on anything that stood out to me, but they can be tackled in later pr's as necessary
Feels like things are moving in a nice direction 🙂

Awesome! ❤  I'll address some of the smaller points in a commit before merge! Happy to handle the others later :)


Remove old record stats workflow

It's no longer recording any recent releases.

Include the python and html bits?

I started to do that but they are being called by other script, I don't think it's being called but wanted to be sure first. Removing the workflow would stop committing old stats in the meantime though.