Client event notifications on the server.

I have asked and scanned the documents for a way to obtain events about for things like client connection/subscription but was unable to find anything. As it currently stands it seems there is no way to take collateral action for when a client subscribes to a feed from the server side. Let me give you an example of why this would be a great feature. Suppose you have a forum collection where each document represents an active topic. The feature you wish to add is a subscriber count of how many people are currently viewing a specific topic. In order to increment or decrement the number of subscribers you need a way to be notified of when a client subscribes to that specific message board and when they unsubscribe.
As it currently stands I don't know whether this can be accomplished with hz acting as a plugin, so what I propose is the following. Make the horizon instance extend the EventEmitter object. When a new client connects emit a 'connection' event and pass in the Client instance. The client instance will also have to be an EventEmitter. Then for events like subscription, and end_feed, emit those events and pass in their query so that the listener can make the necessary external processing.
What do you guys think?

@Tryneus

From my perspective, this seems reasonable, but maybe there's a way to do this as middleware instead of events. #24 is about middleware changes coming relatively soon

You could also do this with a plugin that watches the RethinkDB jobs table.

@deontologician While middleware does seem like a more flexible solution, I personally don't think there is anything wrong with events, and as far as implementation goes I believe it could be relatively painless. I will try to code something up this weekend.
@mlucy I am not too familiar with RethinkDB but how would this solution fare within a clustered environment? Also I feel like this isn't a proper solution for the fact that the horizon framework itself doesn't implement a way to interact with requests.


[macOS] Fix xcode installation script if there is only one Xcode version to install

Description
There is an exception when we try to reverse 1 element array:
MethodException: Cannot find an overload for "Reverse" and the argument count: "1"
This PR fixes it by reversing arrays with more than 1 element.
Related issue:
n\a
Check list

[x] Related issue / work item is attached
[ ] Tests are written (if applicable)
[ ] Documentation is updated (if applicable)
[ ] Changes are tested and related VM images are successfully generated

/azp run macos1014, macos1015, macos110

/azp run macos1014, macos1015, macos110

/azp run macos1014, macos1015, macos110


Configure the .bash_profile

Hello,
I've added .bash_profile file to my home directory.
Signing in via ssh raises the error below:
The default interactive shell is now zsh.
To update your account to use zsh, please run chsh -s /bin/zsh.
For more details, please visit https://support.apple.com/kb/HT208050.
(base) MacBookPro16-Giovanni:m11 Giovanni$ ssh xxxxxxx@as400
xxxxxx@as400's password:
): No such file or directoryC_ALL: cannot change locale (IT_IT.UTF-8
I did try EN_US.UTF-8 as well but without success, QSYSLOCALE library contains  both of them .

Best regards,
Giovanni

The LC_ALL is not really required. You can remove that line.

I will update the docs and remove that line.
This setting might have some impact on C and COBOL compilers and if you are using them then you will have to make sure that you use the CRTLOCALE command to create the locale that you are targeting.


Flask==1.0.2 is not compatible with python-env

I am getting one issue related to dotenv and the tracebacks are when i start server i get something
D:\wamp64\www\projects\Digital\blacklist-changes\gitclonerepo\blacklist-manager>python dev.py Traceback (most recent call last):   File "dev.py", line 23, in      app.run(host='<IP_ADDRESS>', debug=True, port=port)   File "D:\wamp64\www\projects\Digital\blacklist-changes\gitclonerepo\blacklist-manager\env1\lib\site-packages\flask\app.py", line 910, in run     cli.load_dotenv()   File "D:\wamp64\www\projects\Digital\blacklist-changes\gitclonerepo\blacklist-manager\env1\lib\site-packages\flask\cli.py", line 600, in load_dotenv     path = dotenv.find_dotenv(name, usecwd=True) AttributeError: module 'dotenv' has no attribute 'find_dotenv'
so i even found out the issue that is
i am using python-env==1.0.0 with that it seems Flask==0.12 or lower version works.
but  i want to use flask  Flask==1.0.2 or higher version and when i do so i get that error.
and when i use python-dotenv in place of python-env it works fine
i need to use python-env with much higher version of flask say Flask==1.0.2 or anthing greater.

python-env is a random dead package using the same module name as python-dotenv


Update node providers

Hello,
We are a Near node provider NOWNodes.
May you update the node providers list?

Sorry, but the http://bit.do/nownodes-near/ URL brings a 404 page.

Hello Damián,
You were helping me with the NEAR indexer on LinkedIn.
Could you please change the NOWNodes link to https://nownodes.io/nodes?
Thank you!
Anna

Hello Damián,
You were helping me with the NEAR indexer on LinkedIn.
Could you please change the NOWNodes link to https://nownodes.io/nodes?
Thank you!
Anna

I'm currently OOO but if it's urgent, feel free to open a PR with the new URL and we'll merge it


Alfoa/dataobject rework fix conflicts

Pull Request Description
This PR fixes all the Conflicts between devel and dataobject-rework branches

For Change Control Board: Change Request Review
The following review must be completed by an authorized member of the Change Control Board.

[ ] 1. Review all computer code.
[ ] 2. If any changes occur to the input syntax, there must be an accompanying change to the user manual and xsd schema. If the input syntax change deprecates existing input files, a conversion script needs to be added (see Conversion Scripts).
[ ] 3. Make sure the Python code and commenting standards are respected (camelBack, etc.) - See on the wiki for details.
[ ] 4. Automated Tests should pass, including run_tests, pylint, manual building and xsd tests. If there are changes to Simulation.py or JobHandler.py the qsub tests must pass.
[ ] 5. If significant functionality is added, there must  be tests added to check this. Tests should cover all possible options.  Multiple short tests are preferred over one large test. If new development on the internal JobHandler parallel system is performed, a cluster test must be added setting, in  XML block, the node <internalParallel> to True.
[ ] 6. If the change modifies or adds a requirement or a requirement based test case, the Change Control Board's Chair or designee also needs to approve the change.  The requirements and the requirements test shall be in sync.
[ ] 7. The merge request must reference an issue.  If the issue is closed, the issue close checklist shall be done.
[ ] 8. If an analytic test is changed/added is the the analytic documentation updated/added?

Is the "Files Changed" on this accurate?  Seems a bit suspect that there's only one blank-line change...

Yes, because I had to take all the modifications in dataobject-rework. So this PR just "fixes" the history

Okay.  If this passes tests then I approve based on the lack of changes to the rework branch itself.

@PaulTalbot-INL @mandd it looks ok?


“Certificate is not yet valid” error is confusing

“Certificate is not yet valid” is almost always due to a slow system clock, but the error message gives no indication to that effect.  This is the root cause of  https://github.com/QubesOS/qubes-issues/issues/6513.

OpenSSL has no way to know if the system clock is off.  If the clock says its 1970, then its 1970.  I don't see what can be done here.
Marking as inactive, to be closed at the end of 3.4 dev barring further input.

OpenSSL has no way to know if the system clock is off. If the clock says its 1970, then its 1970. I don't see what can be done here.

What about changing the error message to something more useful?  Something like, “Either the certificate is not yet valid, or your system clock is wrong.”

Sure, but thats not something we're going to commit development resources to in light of the backlog of issues we have I'm afraid.  That said, if you have interest, you would be welcome, and thanked to contribute a PR for review.  I can guarantee acceptance of it, but given our backlog, we just can't get to everything.  But, if you're willing, I'm happy to mark this as a community issue, and assign you to it.

Seems like a relatively straightforward change here:
https://github.com/openssl/openssl/blob/1977c00f00ad0546421a5ec0b40c1326aee4cddb/crypto/x509/x509_txt.c#L42-L43
Adding "help wanted" to this and "good first issue"

Can it validate the clock against some ntp server and give warning in case there is delta? it sound more like a debug option
Also maybe it's better to declare the start time of the certificate in the error

It seems to me that its incumbent on the system to ensure that the local clock is in sync with a configured time server rather than having openssl do that verification independently.  But thats just my opinion.

Agree, but what about:
case X509_V_ERR_CERT_NOT_YET_VALID:       return "certificate is not yet valid, start date: CERTIFICATE_START_DATE. system date: SYSTEM DATE";
?

That I think would be great.

I'll try to put it on my self

I know it's been a while since this error was logged but I am facing the same these days.
What I figured out is, that I might need to replace the CMOS battery. When this is running low, it will set the time and date back to manuf. date or some other time in the past (not sure about you 1970!).
Meanwhile, if you leave your PC/Laptop plugged in the power socket overnight (but not switched on), it will somewhat re-charge the battery. It's a theory I am currently working with, so let me know if you guys figured out something else.
Thanks!


Ninja does not recognize browse as a tool, despite it being mentioned in the manual

I don't know if this is a case of the extra tools section of the manual being out of date, or me misunderstanding/doing something wrong, or a bug in Ninja, but when I issue the command
ninja -t browse

I get:
ninja: fatal: unknown tool 'browse'

This is running Ninja 1.8.2 on Windows 7, installed by extracting from the zip downloaded from GitHub. All the other tools listed in that section of the manual are recognized.
The description of this command is schnazzy so if it's available I'd like to try it out. If it's not available, how do we update the manual?

It's just not supported on some platforms https://github.com/ninja-build/ninja/blob/ca041d88f4d610332aa48c801342edfafb622ccb/configure.py#L107 . I think not for any major reason, but browse.cc looks like it might need a little futzing to work on Windows. Otherwise, yeah, we could update https://github.com/ninja-build/ninja/tree/master/doc to mention that lack.

To enable browser mode configure.py needs to append -DNINJA_HAVE_BROWSE flag.
After that this command fails:
".\src\inline.sh" kBrowsePy < .\src\browse.py > build\browse_py.h
Content of inline.sh
varname="$1"
echo "const char $varname[] ="
od -t x1 -A n -v | sed -e 's|[ \t]||g; s|..|\\x&|g; s|^|"|; s|$|"|'
echo ";"

od command is also working on mingw platform.
Can someone explain those steps here?

@jhasse Thanks


Use original extents in OBJ Writer

Description
Related to #19028

Because vtkCellDataToPointData is bugged (see the linked ticket above), we were getting bad extents for zonal data going through the obj writer logic. To correct this, I moved the code to calculate the extents to before we transform from zonal to nodal data. See the before and after below:

This is d from curv3d.silo.
The left has purple because it thinks those nodes have a value of 0, which is wrong. One end of the texture is blue and the other is red so it interpolates. The right image appears as it does in VisIt.

Type of change

[x] Bug fix~~
[ ] New feature
[ ] Documentation update
[ ] Other

How Has This Been Tested?

Built and ran on rztopaz. I exported obj files with the current visit and then with my changes. Then I loaded these files into powerpoint and compared them.
Reminders:

Please follow the style guidelines of this project.
Please perform a self-review of your code before submitting a PR and asking others to review it.
Please assign reviewers (see VisIt's PR procedures for more information).

Checklist:

[x] I have commented my code where applicable.~~
[x] I have updated the release notes.~~
[ ] I have made corresponding changes to the documentation.
[ ] I have added debugging support to my changes.
[ ] I have added tests that prove my fix is effective or that my feature works.
[ ] I have confirmed new and existing unit tests pass locally with my changes.
[ ] I have added new baselines for any new tests to the repo.
[x] I have NOT made any changes to protocol or public interfaces in an RC branch.~~

Merge w/ develop in #19310


Flow planner / execution agent for Copilot

Copilots are often regarded as agents which offer various functionalities like commanding, Q&A, collaboration, suggestion, etc.
And to productize these features in intelligent and reliable ways, the orchestration layer of Copilot would require the following capabilities.

De-composite the goal/question into multiple subgoals, which is also known as Plan in the semantic kernel world.
Leverage the available skills, execute the plan in multi-step, multi-pass way, including interaction with users to get clarification on the goal, input for skills/functions, and authorization for actions when needed.

To fulfill so, I'd like to introduce a flow planner / execution agent.
The "Planner" part which automatically de-composites the task into multiple steps could be of lower priority.
Instead, for each Copilot some predefined flows could be provided, and the "Executor" part should be responsible of orchestrate these flows execution reliably, by resolving the dependencies, pass the parameters and try achieving the goal of each step with available skills in ReAct style, similar as how it is being described in ReAct: Synergizing Reasoning and Acting in Language Models.
The planner would include the following parts.

Data model for the flow, steps
Execution agent which resolves dependencies, determine execution order, maintain context scope
ReAct execution engine for each step
Status tracker so the Copilots are re-entrant and would resume the work as user provides more input.

The new planner should also provide the flexibility of support versatile skills, including semantic functions, native functions and skills requires chat interaction in an easier to use way.

Curious to see comparison of this new Flow planner and the Stepwize planner recently added.

@yan-li, Curious to see comparison of this new Flow planner and the Stepwize planner recently added.
Any plans to add it to the Chat Copilot app?

The major differences are

support orchestration of multi-step flow (StepWise planner supports a single goal)
make it Chat friendly for multi-step execution (The observation of stepwise planner is limited to result from non chat skills).
more complicated execution modes; for example, in real world flow, a step in the flow could be either optional or executed multiple times, and the planner would work with user to decide that.

And yes once this extension is available will try to make it a planner option for chat-copilot to better explain how to utilize the planner in Copilot apps.


Real user monitoring for a ReactNative app inside a native iOS app

We have a native iOS app which has couple of screens in ReactNative.
How can we setup the real user monitoring for this project?

Hi @hamidhadi, thanks for reaching out!
We have a dedicated guide for this use case here: https://github.com/DataDog/dd-sdk-reactnative/blob/develop/docs/hybrid_applications.md.
You can also find a sample iOS application with RN screens instrumented here: https://github.com/DataDog/dd-sdk-reactnative-examples/tree/main/ios-app-with-rn.
I'll close this issue for now, please feel free to reopen it if anything is unclear in the documentation so we help you and improve it :)


Slides for Data Structures; break up notebook 02

I realized that, because I just went with what was in the Fundamentals notebook from the intro class, the notebook for section 02 had a little bit of variables/operators and a little bit of data structures. This PR breaks them into two notebooks and adds content to each.
In the first notebook, I added a section on comparison operators. It's not terribly long, so this section may end up being quick.
In the second notebook (which took all the content from Lists & Dictionaries onward from notebook 02), I added sections on containers and immutability. Again, this isn't a terribly long notebook, but it introduces a lot of content that existing developers are likely to ask questions about – so I expect Q&A and some interactive examples to fill time.

Curious if we should cover is, given that we get through comparisons and in. Not sure it's necessary, and might be more trouble/time than it's worth.

I was considering that, and eventually figured that it only would make sense to introduce in the Data Structures section – since up until we see lists and dictionaries, == and is return the same result in most cases. I figure that if someone asks about it, or if we have extra time, we can jump into it.


Throttle ingesting new WAL if there is already a big backlog of in-memory layers

If there are already many frozen in-memory layers, and new WAL is processed faster than the layer flushing thread can flush the old frozen in-memory layers to disk, start throttling the WAL receiver. Otherwise we will accumulate more and more in-memory layers until we run out of memory.
The "in-memory" layers are actually spilled to disk too, so it won't happen as quickly as you might think. But there's still a fair amount of in-memory data structures, so each in-memory layer still consumes a fair amount of memory even if all its data pages are spilled to disk.

@hlinnaka does this need any protocol change ?


[UNDERTOW-1623] Fix the deadlock by invoking lastDataRead at IO thread

Jira: https://issues.redhat.com/browse/UNDERTOW-1623

This is an alternative fix for #828

This is ok to test

I'm closing this PR and sticking with #828 . I think that asynchronously invoking lastDataRead from receive might have collateral effects on receive logic. The reason is that receive uses isLastFrameReceived() to decide if we are at last frame and Http2Channel.isLastFrameReceived returns lastDataRead. So, by doing it asynchronously we risk a receive missing a true isLastFrameReceived


Refactor online db

The online compound database searches now use the new CompoundDBAnnotation from #452
For now, the DBCompound still exists, but it will be removed after Robin's #453 is merged.

Great.


Complete JSON API for creating certificates

As a data portal owner, I want to create silver-level or higher certificates so I can show I have great data.
There is no standard markup for the answers required for higher-level certificates, so a JSON API for creating certificates that allows a response for any question would do the job.

So, as a data portal owner I'd need to write a program to call the API for my datasets each time they are added or changed. To earn a silver (or higher) certificate, I'd need to provide the required answers either by:

using some defaults for my portal (e.g. my twitter account, I backup nightly)
adding some metadata for each dataset (e.g. where's the technical documentation)

I just tried to earn a certificate for some of my data and this was the shortfall for Silver from the "How can I improve my open data" page:

provide technical documentation for the data
provide instructions about how suggest improvements to the way you publish data
provide contact information for people to send questions about privacy and disclosure of personal details to.
guarantee that your data will be available in this form for at least a year

Seems 3 of these could be portal defaults and I just need to address the "technical documentation" question.
@Floppy - Does that sound right?
How far could the CKAN Plug-in #1252 go in supporting the use of the API? Could the Plug-in read a portal configuration file to answer some questions, leaving only the dataset specific questions to be addressed?

I believe @zephod is interested in this too. Tom any current plans?

Would have been really helpful in December but it will be months before we
loop back around to trying this again. Depends on demand from customers TBH.
On 9 March 2016 at 11:15, shevski<EMAIL_ADDRESS>wrote:

I believe @zephod https://github.com/zephod is interested in this too.
Tom any current plans?
—
Reply to this email directly or view it on GitHub
https://github.com/theodi/open-data-certificate/issues/1388#issuecomment-194246030
.

--
Tom Rees
CEO, Founder
http://datapress.com


C++: linters and profilers

Good linters perhaps should be listed under a separate subheader under Style:

cpplint (is mentioned already): checks (mostly?) for style, following the Google style guide.
cppcheck: does static analysis, checks for bugs.

These can (and perhaps should, though cpplint can be debated, I guess) be used simultaneously, they are complementary.
Profilers:

cachegrind
gprof

Good article explaining pitfalls in using profilers:
http://yosefk.com/blog/how-profilers-lie-the-cases-of-gprof-and-kcachegrind.html

Also perf, the Linux kernel profiler is very good, if a bit difficult to use due to not overly abundant documentation. There's a CppCon 2015 presentation on it that is useful, I'll see if I can dig up some links.
I've tried cpplint and cppcheck, but they didn't find any errors in my code. Especially cpplint seems to check mainly for mistakes that you won't make if you use proper C++. Still, could be useful for if you're dealing with crappy existing code.

Especially cpplint seems to check mainly for mistakes that you won't make if you use proper C++
So it does exactly what you would hope for ;-)
Remember: the target of this information is also less experienced programmers.

Another  useful blog on pros/cons of different profilers can be found here. In addition to these tools, there is an interesting one called PAPI using hardware performance counters but I haven't used it (yet).

Sweet, didn't know about PAPI but it looks pretty awesome. I think I'll try that on my forest fragmentation code next time a round tuit comes, I'll let you know how it goes :).

@jhidding and @egpbos -- is this issue still relevant? Does the guide contain sufficient detail on these topics (or points to resources on these topics).

No time to review now, can we try again at the next sprint? :)

Sure.


[BugFix] Fix TP support for AWQ

Tested:

[x] LLaMA (TheBloke/Llama-2-7B-AWQ)
[x] Mistral (TheBloke/Mistral-7B-Instruct-v0.1-AWQ)
[x] OPT (ybelkada/opt-125m-awq)
[ ] Falcon (No AWQ + Falcon-40B model available in HF hub)
[x] MPT (TitanML/mpt-7b-chat-8k-4bit-AWQ)
[x] GPTBigCode (casperhansen/starcoderbase-1b-awq)
[x] GPT-J (TitanML/gptj-6b-base-4bit-AWQ)
[x] BLOOM (bdambrosio/bloom-awq)

@zhuohan123 You're absolutely right. That's a far better design. Let me change the PR accordingly.

@zhuohan123 The PR is ready for review. PTAL.

Does this PR provide enhancements for latency and throughput optimization in the AWQ models' inference process?


Negative Constraints Implementation

❓ Questions and Help
Before asking:

search the issues.
search the docs.

What is your question?
Are you planning to implement the use of negative constraints on constrained decoding? If not, can you give me some tips to do it using the existing code?
Thanks in advance.
Code

What have you tried?
I have not tried anything yet.
What's your environment?

fairseq Version (e.g., 1.0 or master): master
PyTorch Version (e.g., 1.0): 1.6
OS (e.g., Linux): Linux
How you installed fairseq (pip, source): source
Build command you used (if compiling from source):
git clone https://github.com/pytorch/fairseq
cd fairseq
pip install --editable ./
Python version: 3.6
CUDA/cuDNN version: 10.1/7.6
GPU models and configuration:
Any other relevant information:

I am also very concerned about this issue.

In negative constraint decoding, it's easy to avoid a word by setting its probability to inf. But for phrase, I'm a little confused. Is it just setting the probability of the last word in the phrase to inf?

Yes, you have to track the state and only penalize the last word. You also have to take care to reset the state if you generate part of a phrase but then don't finish.
The constraints interface in search.py should be sufficient, though I haven't thought it through. See LexicallyConstrainedBeamSearch. I think you would make a sister class of this and modify as appropriate. It's considerably easier to do than positive constraints and should be straightforward.

Thank you! I'll try to implement it following your instructions.

I created a PR at here


Secret callback revisited

Based on PR 413, without breaking existing functionality.
Added features

verify's secretOrToken parameter can now be a callback function, see updated README.md for details
updated tests and readme

Performance improvements

merged two decodes into one

Dependencies

Removed xtend and use Object.assign instead

See issue 406

LGTM 👨🎓

🎉  Released on v8.3.0!! Awesome work @JacoKoster 👏


⚠ Fortnite has degraded performance

In e3538de, Fortnite (https://fortnite.com) experienced degraded performance:

HTTP code: 200
Response time: 1554 ms

Resolved: Fortnite performance has improved in de7ee89.


Bootstrap project

Must be the first work item.

Create a ruby project
Add linting
Add github action for CI

@om26er  this is done, BTW when do we close an issue?

closes: https://github.com/xconnio/wampproto.rb/pull/16

fixed via https://github.com/xconnio/wampproto.rb/pull/16


[Program]: Write a Scala program to convert string to alternatingcase

Description
Write a Scala program to convert string to alternatingcase
Alternatingcase is a style of writing in which each letter is converted to its opposite case.
Input  : "hello world"
Output : "hElLo WoRlD"

How to contribute

Save the solution in program/program/convert-string-to-alternatingcase/convertStringToAlternatingcase.scala file

!assign


New Feature: Accessibility

Would be nice to have the slider accessibile, maybe with custom labels (i18n).

Hi @SLMNBJ ,
What do you mean by accessibility? Like aria-hidden="" labels?

Hi @davidcetinkaya,
Yes, I'm talking about the aria-labels. For example, when i navigate using the VoiceOver, i would like to header next slide, previous slide (maybe with custom labels for multiple languages). Same for the dots navigation.

Hi @SLMNBJ,
Thanks for the clarification!
If I'm to add this to the Embla core, I'd need some kind of draft or a well specified suggestion on how to implement this (based on web accessibility standards for carousels).
Emblas purpose is to provide the tools to build great physics-based carousels rather than providing a huge set of features out of the box, so any added feature should be as generic and reusable as possible.
With that said, you do have access to a lot of stuff by using the Embla API to build your own solution and add your custom accessibility labels:
const node = document.getElementById('embla')
const embla = EmblaCarousel(node)

embla.getContainer() // Gets the current container element
embla.getSlides() // Gets the slides as an array of elements
embla.getSelectedIndex() // Gets the current selected slide index. First slide starts at index 0.
// etc.

I’m closing this due to lack of response. Thank you for reporting this 👍🏻!

The features needed for a carrousel a11y are described here : https://www.w3.org/TR/wai-aria-practices-1.1/examples/carousel/carousel-1.html

I'd be surprised if adding a11y attributes added much too much to the bundle (though 1. I could be wrong, and 2. it's subjective).
a11y's perceived importance is growing, and it could be even be an opt-out/opt-in import which with tree shaking wouldn't affect bundle size if not used.
If it gains traction enough for it to go ahead I'd be very happy to contribute.

Hi @mantagen,
Thank you for sharing your thoughts. It depends on how much accessibility we want to implement into the core. If it's only the aria-hidden labels, it may not add much to the bundle size.
Recently, I've considered adding accessibility stuff to the library core. I'm thinking something along these lines:

Toggling aria-hidden labels for slides.
Allowing for keyboard navigation with arrows as mentioned in #53. Although I'm not sure about adding this.

...and more. But if I'm to proceed with that suggestion, I'm considering to remove the following options:

selectedClass
draggableClass
draggingClass

...in order to keep the library lightweight. I've raised this before releasing major version 3 here, and at that time, Embla users voted to keep these. But only 10 people voted so it's not like people seem to care too much about it. Also, it seems like React users don't utilize these options much.
What's your thoughts about my suggestion?
Best,
David

This sounds good to me. I would remove those classes, however I'm pretty much exclusively using css-in-js at the moment, whereas if I was using classes I may be of a different opinion! To me, some small accessibility additions seem more like core functionality than classes.
Following from what @hotgeart has said, the basic aria attributes to add would be

aria-roledescription="carousel" on the "viewport" element (the root element to which emblaRef is passed)
aria-roledescription="slide" on each slide element
aria-label="{i} of {n}" on each slide element (where aria label hasn't been provided by the user?)
aria-live="polite" on the element containing the slides

however, if the user has put the carousel on a timer, so that it slides automatically, then this should be aria-live="off", otherwise the user is constantly alerted to slide changes
this makes me wonder if it should be up to the user to set this attribute

aria-hidden="true" on slides which are not visible

for most cases this will apply to all but the current slide, however, in the cases in which more than one slide is visible, this logic is no longer correct
perhaps in this case the user could override the aria-hidden attribute?

I've seen that swiper are working on improving accessibility too, https://github.com/nolimits4web/swiper/issues/3149, though obviously it is not a lightweight solution -- eg. includes navigation etc etc -- so not all of their criteria apply here, it might be worth looking at their discussion.
I'm wondering if aria-live and aria-hidden might be beyond the scope of this package, since without proper use by the person implementing the slider, they could actually make accessibility worse.
@hotgeart @SLMNBJ what do you think?

Thank you for your input @mantagen.
If you don't mind me asking, where did you get that nice list of aria attributes? Also, thanks for the link to the Swiper accessibility issue, that will probably help a lot.
Best,
David

Hi David,
That list is essentially from https://www.w3.org/TR/wai-aria-practices-1.1/examples/carousel/carousel-1.html
There are two potential problems with adding aria-hidden that I can think of:

For a carousel in which the width of the slide is eg. 20% (i.e. multiple slides fit within the carousel viewport), all the visible slides should have aria-hidden="false". It would need a programmatic way of determining whether the slide is visible, for instance: gatsby-image handles it like:

https://github.com/gatsbyjs/gatsby/blob/cf3430462748cecdfb4b9f6b61285534fb4a2ea9/packages/gatsby-image/src/index.js#L352

If slides contain any focusable elements like a or button, and the slide has aria-hidden="true" then the browser can focus on these elements, but the focus will not be announced by a screen reader. See:

https://www.accessibility-developer-guide.com/knowledge/aria/bad-practices/#hiding-focusable-elements
https://www.w3.org/TR/using-aria/#fourth

I'd say that perhaps (1) is not such a big deal, but that (2) is. If the library added a tabIndex: -1 to all focusable elements of the inactive slides, and there was a something in the documentation saying that the carousel was intended only to have one slide per view, then maybe this would get around both these issues, but this is presumably beyond core scope.
This is why I'm currently of the opinion that adding aria-hidden to the core of this library could not be a good idea.

For further reference: https://act-rules.github.io/rules/6cfa84
Also, I've just seen that the carousel slides on tab press if new focus is within the following slide. I'm not sure what the implications of this are... as in, I'm not sure if it is okay to dynamically change from aria-hidden="true" to aria-hidden="false" as an element receives focus.

Thank you for the further information @mantagen.
That's helpful 👍. I'm thinking that we should create a CodeSandbox with all the desired accessibility features. For example, we can use the default React sandbox as a starting point. I'm hoping that by the time we're done with the sandbox, we should have a clear picture of what should go into the Embla core and not.

Also, I've just seen that the carousel slides on tab press if new focus is within the following slide. I'm not sure what the implications of this are... as in, I'm not sure if it is okay to dynamically change from aria-hidden="true" to aria-hidden="false" as an element receives focus.

When I implemented this, I thought it would be a good idea to mimic the browser behavior to some extent, by brining the focusable element into view. But I'm open to other suggestions.
Best,
David

Yes I believe that content of non-visible slides should not be tabable:

The user cannot tab to any of the interactive elements in hidden panels. The tabindex="-1" attribute should be added dynamically to these elements. The attribute would be removed when the associated panel is visible.
https://www.accede-web.com/en/guidelines/rich-interface-components/carousels/

This article also suggests to add aria-hidden="true" to non-visible slides.
Yes, let's start from the sandbox, and see where we get.

Yes I believe that content of non-visible slides should not be tabable:

The user cannot tab to any of the interactive elements in hidden panels. The tabindex="-1" attribute should be added dynamically to these elements. The attribute would be removed when the associated panel is visible.
https://www.accede-web.com/en/guidelines/rich-interface-components/carousels/

This article also suggests to add aria-hidden="true" to non-visible slides.
Yes, let's start from the sandbox, and see where we get.

Hello,
I would like to change the aria-hidden value from false to true  for selected slide, I mean the slide with "is-selected" class. Could you let me an example how to do that in vanilla script?

Hi @Wikgabja,
You can use the same approach as the selected class toggling functions here. And don’t forget to attach this function to the select and pointerUp event like this.
I hope that helps.
I’ll soon release v6 which I think can be somewhat of a game changer for all Embla users that are frustrated about missing features (like accessibility). v6 comes with a plugin system that will enable Embla users to use plugins to extend it beyond its core functionality. And anyone will be able to write and share their own plugins too:

#229

More information coming as soon as v6 has been released.

Just curious since I'm reviewing this carousel for use on our site: Are there any good a11y plugins available now? I noticed the plugin route was suggested but none were mentioned here or on the site, which is why I figured I'd ask.
Keyboard a11y isn't too bad (as long as you're sighted) but screen readers  just identify everything right now as "button" so it's not helpful yet. Not sure if you have to dig into the guts in order to announce which bullet/dot you're on, for example.

Hi @patricknelson,
No plugin yet. But the secret project will include accessibility:

#504

I can’t give an ETA on when it’s ready though because it’s under development. If you have to build something soon and want to use this library you have to do it yourself.

Ok. Thanks for the feedback.
Just curious: What’s the point to having a “secret” project in open source? Why not just describe what it is and be frank that it’s just incomplete or the concept is under development?

@patricknelson because I don't want feedback and any interference before I have a working proof of concept or an experimental feature ready.

Calling all accessibility experts 👋! Could anyone help me with creating a complete list of things that are required to create a fully accessible carousel? It's for the accessibility option that will be available in the carousel generator.

@davidjerleke everything you need is in the example of the W3C : https://www.w3.org/WAI/ARIA/apg/patterns/carousel/examples/carousel-1-prev-next/

@davidjerleke Makes sense. The updated description helps a bit too. Looks like an interesting project.

Hey guys,
thought i would give this a shot, so here is my attempt:  https://github.com/nwidynski/embla-carousel-aria

[X] ARIA-spec accessibility adhering to W3 ARIA carousel
[X] Localization of all ARIA properties
[X] Adobe-inspired automatic focus shift
[X] Full screen-reader support

Accessibility should be at the core of the plugin, otherwise, it's a No for me.

@alvinkonda if you don’t want to understand this, then have fun finding a different library.

Hi @patrick-schneider-latori,
Thanks for your question. Please help me understand what are you looking for? A convenient solution where the package does everything for you? Or simply an example setup that's a11y compliant?


Tag for composer

Hi all,
Would it be possible to create a tag or add this plugin to wpackagist.org? If I install this plugin via the github repository I'm unable to use installer-paths.
Thank you.

Sorry for not ever replying to this issue, @thecodeassassin!
Published on Packagist and making a few other changes, then should be preparing a new stable release with proper tag/version.


jkbms working with CAN interface

Is your feature request related to a problem? Please describe.
Hi i have a running jkbms CAN version now running since more than 10 month.
If I get write access to the repo I could provide my code.
Describe the solution you'd like
No response
Describe alternatives you've considered
No response
Additional context
No response

You don't need to have write access to do that. Please fork the repository, add your driver to the jkbms_ble branch and then open a PR.

@IrisCrimson
what kind of JKBMS do you have?
Do you know if CAN is an option for the JK_B2A8S20P BMS?
Does anyone has interfaced that one?

@IrisCrimson, have you connected more than one bms with can? How do you Set the can bus ID?
Very interesting!

@IrisCrimson what kind of JKBMS do you have? Do you know if CAN is an option for the JK_B2A8S20P BMS? Does anyone has interfaced that one?

It's not integrated by default. You have to select the can option before buying. The script has to be updated to the latest version.
https://github.com/IrisCrimson/dbus-serialbattery/blob/30fb705d801ea88deac762c354457b130ca89f3f/etc/dbus-serialbattery/jkbms_can.py

Please try the latest nightly from the dev branch. To enable CAN add CAN_PORT = can0 to the config.ini.

Thats interesting new feature.
Actually I'm running as serial driver via RS485 but I'd like to test it because of the trouble with USB Ports, My JKBMSes 4x B2A24S15P have RS485 and should have Canbus as well
How do I connect this best to my Cerbo?

And how do you Set the canbus id?

I have no idea, hopefully @IrisCrimson can answer that.

Hi
regarding the CAN ID, as far as I know there is no way to change this.
My solution was to build a small CAN gateway. Based on an old PRI version
1.2 B and several MCP2515 shields.
I will push the script and the howto to git within the next days.....
Meanwhile i have as well tested the jkbms_can version Manuel merged to the
dev branch.
All my findings/fixes and some extensions that are needed to use more than
one CAN bms at different CAN ID's could be found at following GIT Branch:
https://github.com/IrisCrimson/dbus-serialbattery/tree/jkbms_can_2
Within this branch you could find as well the description how to build the
needed can cable:
https://github.com/IrisCrimson/dbus-serialbattery/blob/jkbms_can_2/docs/how_to_cable_jkbms_can_to_victron_can.txt
On top of that i created an master/aggregation BMS this I have pushed to
following branch:
https://github.com/IrisCrimson/dbus-serialbattery/tree/dbus-masterbattery
-> Maybe this could fully merged into the dbus-serialbattery.
[image: grafik.png]
https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
Virenfrei.www.avast.com
https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
<#m_3103273102869763835_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
Am Di., 26. Sept. 2023 um 07:44 Uhr schrieb Manuel @.***

:

I have no idea, hopefully @IrisCrimson https://github.com/IrisCrimson
can answer that.
—
Reply to this email directly, view it on GitHub
https://github.com/Louisvdw/dbus-serialbattery/issues/610#issuecomment-1734866246,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AL3NPGDAFFL7U2LZM7TVT2TX4JTUDANCNFSM6AAAAAAXXARRLM
.
You are receiving this because you were mentioned.Message ID:
@.***>


Various website updates

See individual commit messages for details.
#1168 describes how even after this PR, API docs are still broken - but this PR should still improve the situation by removing invalid HTML from the sidebar

Thank you for these fixes @SgtCoDFish!
/lgtm
/approve


Animated icons Bug: The search field is not getting populated

Importing issues from old repo on Gitlab.
Created by: @vinayaksh42

The search field of the animated icons tab is not getting populated which results in the inability to share the icon as the URL remains the same.
https://user-images.githubusercontent.com/5013096/136406200-08fd2eed-8d72-4846-95ac-ee9cea02222a.mp4

if this is not resolved i can pick this up @cyntss .

@capedcrusader23 all yours!


The motivation for this project is killing it

Using the data API enables more than just a "cheap" way of connecting to a serverless aurora. It is a way to use the AWS managed connection with an ORM like gorm. This access pattern is particularly useful to connect stateless computing services (lambda) with a serverless database without running the service out of available connections.

Furthermore, if you actually changed the motivation I would think this project could get some backup from a company or a bigger team of engineers.


Webpack error with node 12

I updated my nodejs version on my machine to node 12.0 and when i run (npm run dev) to start my project i get a:
ERR! code ELIFECYCLE
npm ERR! errno<PHONE_NUMBER>
npm ERR<EMAIL_ADDRESS>dev: webpack-dev-server --inline --progress --config build/webpack.dev.conf.js
npm ERR! Exit status<PHONE_NUMBER>
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>dev script.
The log file log
Is this a problem with node 12 ?
Other relevant information:
webpack version:  ^3.6.0
Node.js version: v12.0.0
Operating System: Windows 10

Problem in webpack-dev-server


try to constrain rbac based on e2e usage

/hold

I was using this PR to test some changes to OLM's RBAC, which lead to this upstream PR which is being downstreamed in #600, so I'm going to close this PR.


Update all dependency versions except protobuf

Also introduces the use of maven_install.json with rules_jvm_external to track JAR dependencies instead of MODULE.bazel.lock.
We can't update protobuf to the latest version, 27.2, because grpc-java depends on version 23.1 and breaks if we upgrade it:
ERROR: .../external/grpc-java~/protobuf/BUILD.bazel:3:13:
  Building external/grpc-java~/protobuf/libprotobuf.jar (6 source files)
  failed: (Exit 1): java failed: error executing Javac command
  (from target @@grpc-java~//protobuf:protobuf)
  external/rules_java~~toolchains~remotejdk21_macos_aarch64/bin/java
  '--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED'
  '--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED' ...
  (remaining 19 arguments skipped)
external/grpc-java~/protobuf/src/main/java/io/grpc/protobuf/StatusProto.java:190:
  error: cannot access Builder
        .setCode(status.getCode().value());
        ^
  class file for com.google.protobuf.GeneratedMessageV3$Builder not found

Note: Specifying protobuf 27.2 to generate the above also required adding com.google.j2objc:j2objc-annotations:3.0.0 to the list of maven artifacts.

I keep retrying the test-matrix (macos, x64, monterey, 12, d04e89854b3931f4aaced77aa3a2fcad5834b3a6, true) job, but it keeps failing with a weird timeout on the Go SDK:

https://github.com/EngFlow/example/actions/runs/9860259642/job/27226730890?pr=324
https://opal.cluster.engflow.com/invocations/example-oss/9cb47c52-3a77-4b51-8cd7-d59a3e80b25f#console

Executed 0 out of 7 tests: 7 tests pass.(16:45:26)
ERROR: /private/var/tmp/_bazel_ec2-user/d38a93fb1be0997380224f7bfd079801/external/rules_go~/BUILD.bazel:42:7:
GoStdlib external/rules_go~/stdlib_/pkg failed:
(Exit 34): Remote Execution Failure:
Internal: ChCgHfMQ0UNCiqLjEC0JFA-PEgtleGFtcGxlLW9zcxolCiCTdv895MyiDrqtVwguLnh6f6-bpunJkl-v4zZwItzDyhCnAQ==:
java.util.concurrent.TimeoutException: Acquire operation took longer than 10000 milliseconds.
---- cut here ---8<--------8<--------8<--------8<--- cut here ----
java.io.IOException: java.util.concurrent.TimeoutException: Acquire operation took longer than 10000 milliseconds.
	at com.engflow.storage.s3.S3ClientV2.asSyncCall(S3ClientV2.java:262)
	at com.engflow.storage.s3.S3ClientV2.upload(S3ClientV2.java:863)
	at com.engflow.re.storage.ExpirationExternalStorage.lambda$writeBlocking$1(ExpirationExternalStorage.java:257)

@jayconrod Can you peek at the failures I'm getting, described in my previous comment and currently demonstrated in the CI job, and see if they make any sense to you? I'm not sure if it's a rules_go issue, a go 1.22.5 issue, or a macOS remote execution issue. (The last seems most likely, but I have no idea yet as to why.)
FWIW, here's the contents of rules_go~/BUILD.bazel where the build is choking:
# TODO(jayconrod): add a gazelle rule so gazelle can be run automatically.
# It can't go here though, because it would break anything that depends on
# rules_go but not Gazelle, including our own go_bazel_tests.

stdlib(
    name = "stdlib",
    cgo_context_data = select({
        "//go/platform:internal_cgo_off": None,
        "//conditions:default": ":cgo_context_data",
    }),
    visibility = ["//visibility:public"],
)

@jayconrod Can you peek at the failures I'm getting, described in my previous comment and currently demonstrated in the CI job, and see if they make any sense to you? I'm not sure if it's a rules_go issue, a go 1.22.5 issue, or a macOS remote execution issue. (The last seems most likely, but I have no idea yet as to why.)

@mbland Could you please file an internal issue and tag @restingbull to triage?
This is an internal error. It looks like a macOS worker in Opal is failing to upload output files with expiration external storage.
I don't think this is a problem with rules_go, Go, or Bazel. The GoStdLib action produces a few hundred output files (compiled objects) ranging from 10s to 1000s of kilobytes. From the error message, I'd guess we're tripping over some concurrency limit in the AWS SDK. Not sure why that would affect macOS in particular.
I think it's fine to merge this PR with that job failing, but if you want it to be green, you could leave rules_go and Go at their current versions.

@mbland Could you please file an internal issue and tag @restingbull to triage?
This is an internal error. It looks like a macOS worker in Opal is failing to upload output files with expiration external storage.
I don't think this is a problem with rules_go, Go, or Bazel. The GoStdLib action produces a few hundred output files (compiled objects) ranging from 10s to 1000s of kilobytes. From the error message, I'd guess we're tripping over some concurrency limit in the AWS SDK. Not sure why that would affect macOS in particular.
I think it's fine to merge this PR with that job failing, but if you want it to be green, you could leave rules_go and Go at their current versions.

@jayconrod Thanks; it looks like @restingbull already beat me to it. I can wait a while before merging this. If we fix it on our end, I can re-run the jobs here to confirm all is indeed well.


Gacha card creation: address @kaori requirement for each step

Primary pain point when creating cards is the requirement to @kaori to send her input for each step.
see #100

:/


SOLR-13350, SOLR-17298: document multiThreaded=(true,false) parameter; add responseHeader.multiThreadedUsed element;

https://issues.apache.org/jira/browse/SOLR-13350
https://issues.apache.org/jira/browse/SOLR-17298

https://github.com/apache/solr/actions/runs/10110021801/job/27959091476?pr=2596 CI failure looks unrelated
./gradlew :solr:core:test --tests "org.apache.solr.cloud.ReindexCollectionTest.testAbort" -Ptests.jvms=96 "-Ptests.jvmargs=-XX:TieredStopAtLevel=1 -XX:+UseParallelGC -XX:ActiveProcessorCount=1 -XX:ReservedCodeCacheSize=120m" -Ptests.seed=40BE4D7EC8B75511 -Ptests.timeoutSuite=600000! -Ptests.file.encoding=UTF-8

I'm not sure about the conversion to Boolean and only reporting if it was requested. That will still leave the default decision unclear if it wasn't requested explicitly.  I think the logging of the query should be sufficient to identify if it was requested, and the logging in the code should report what was ultimately decided regardless of the request.

Thanks everyone for your inputs here so far!
Unfortunately I won't have bandwidth to iterate on this today or so. "Allow edits and access to secrets by maintainers" is enabled on the PR i.e. everyone please feel free to make edits and/or merge as you see fit. Thank you.
cc/FYI @anshumg as 9.7 release manager


The way to upload file

Hi ,
I am trying to upload file using sync-request.
Here is my way of uploading(using data as the Buffer to upload)
var fs = require('fs');
fs.readFile('to-upload/test.txt', function (err, data) {
    if (err) throw err;
        var resUploadFile = syncRequest('PUT', uploadUrl, {
            data: data
        });
   log(JSON.parse(resUploadFile.statusCode));
});

However I failed to upload the file in this way. Can you tell me what's the correct way of uploading files using sync-request.
Thanks!

I added the headers options and it works

Incidentally, statusCode is already a number, so you don't need to JSON.parse it.

yes, you are right ~


Feature location map in contributors card

Issue Addressed
Closes #97

Merging the work of contributor @sherikovic from his pull request #138 and this closes out the issue #97


GoRouter ShellRoute wrong official example and transition bug

Hi,
There is an en error on this official documentation (or maybe I am wrong): https://github.com/flutter/packages/blob/main/packages/go_router/example/lib/shell_route.dart
As you can see on the code, each Screen widget, starts with a "Scaffold". But they parent with BottomNavigation have also a Scaffold which duplicates the usage of Scaffold and in the widget tree we have 2 Scaffold.
On the flutter documentation we have this : https://api.flutter.dev/flutter/material/Scaffold-class.html#:~:text=It is typically,updates the AppBar

It is typically not necessary to nest Scaffolds.

On my app, I wanted to use only 1 shared Scaffold, but it cause a bug during transition. To replicate it, you can use this code: https://github.com/flutter/packages/blob/main/packages/go_router/example/lib/shell_route.dart
And just change the ScreenB widget content to this (just removing the Scaffold parent):
/// The second screen in the bottom navigation bar.
class ScreenB extends StatelessWidget {
  /// Constructs a [ScreenB] widget.
  const ScreenB({super.key});

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          const Text('Screen B'),
          TextButton(
            onPressed: () {
              GoRouter.of(context).go('/b/details');
            },
            child: const Text('View B details'),
          ),
        ],
      ),
    );
  }
}

Or see the real preview here: https://flutlab.io/editor/46151d54-95e1-49cf-9fe0-ad0afc469c76
Then, if you try to go from A Screen, to B Screen, you will the that there is a transition bug from the view A to B. Like this:

As you can see, there is no problem to go From A to C, because the A and C have their own Scaffold so duplicated Scaffolds with BottomNavigationBar. But as I removed the Scaffold from the Screen B to keep only 1 scaffold, there is a transition bug from A to B, C to B etc. But no problem from B to A, or C.

Hello @sovetski. This is expected since the Scaffold adds a background to the screen by default of white. Without the Scaffold, the background is transparent and therefore you see this effect. This is not a bug and is expected. You can extract your shared Scaffold into a reusable widget and use it on all screens. If you need more help with your code, I suggest finding help on various communities found on https://flutter.dev/community. Since this is not a bug, I am closing this issue. Thank you

Hi @exaby73,

Without the Scaffold, the background is transparent and therefore you see this effect.

As I mentionned, there is a Scaffold, that is why I don't understand why there is a problem. Did you checked this code? https://flutlab.io/editor/46151d54-95e1-49cf-9fe0-ad0afc469c76 You will see that there is a Scaffold, but instead of 2 Scaffold, on the Screen B, there is only 1 Scaffold to it is very strange behaviour

The live preview does not load for me. Please try to include the code in code blocks in the comment itself, or use https://dartpad.dev to provide a code sample. But again, ultimately ScreenB will be shown, and since ScreenB does not have a Scaffold, it will be transparent. Also, lots of widgets rely on a Scaffold like ScaffoldMessager to show SnackBars, so you will get problems later

@exaby73 sorry, maybe my explanation is wrong, I will try again. ScreenB itself does not contain a Scaffold. But its parent widget ScaffoldWithNavBar does have a Scaffold. And since ScreenB is a child element of ScaffoldWithNavBar it does have a Scaffold. The reason why I remove the Scaffold from ScreenB is to avoid getting 2 Scaffold on my Widget tree as I mentioned in the issue description, the Flutter documentation says

It is typically not necessary to nest Scaffolds.

There is the final code that you can try and see the problem.
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

final GlobalKey<NavigatorState> _rootNavigatorKey =
    GlobalKey<NavigatorState>(debugLabel: 'root');
final GlobalKey<NavigatorState> _shellNavigatorKey =
    GlobalKey<NavigatorState>(debugLabel: 'shell');

// This scenario demonstrates how to set up nested navigation using ShellRoute,
// which is a pattern where an additional Navigator is placed in the widget tree
// to be used instead of the root navigator. This allows deep-links to display
// pages along with other UI components such as a BottomNavigationBar.
//
// This example demonstrates how to display a route within a ShellRoute and also
// push a screen using a different navigator (such as the root Navigator) by
// providing a `parentNavigatorKey`.

void main() {
  runApp(ShellRouteExampleApp());
}

/// An example demonstrating how to use [ShellRoute]
class ShellRouteExampleApp extends StatelessWidget {
  /// Creates a [ShellRouteExampleApp]
  ShellRouteExampleApp({super.key});

  final GoRouter _router = GoRouter(
    navigatorKey: _rootNavigatorKey,
    initialLocation: '/a',
    routes: <RouteBase>[
      /// Application shell
      ShellRoute(
        navigatorKey: _shellNavigatorKey,
        builder: (BuildContext context, GoRouterState state, Widget child) {
          return ScaffoldWithNavBar(child: child);
        },
        routes: <RouteBase>[
          /// The first screen to display in the bottom navigation bar.
          GoRoute(
            path: '/a',
            builder: (BuildContext context, GoRouterState state) {
              return const ScreenA();
            },
            routes: <RouteBase>[
              // The details screen to display stacked on the inner Navigator.
              // This will cover screen A but not the application shell.
              GoRoute(
                path: 'details',
                builder: (BuildContext context, GoRouterState state) {
                  return const DetailsScreen(label: 'A');
                },
              ),
            ],
          ),

          /// Displayed when the second item in the the bottom navigation bar is
          /// selected.
          GoRoute(
            path: '/b',
            builder: (BuildContext context, GoRouterState state) {
              return const ScreenB();
            },
            routes: <RouteBase>[
              /// Same as "/a/details", but displayed on the root Navigator by
              /// specifying [parentNavigatorKey]. This will cover both screen B
              /// and the application shell.
              GoRoute(
                path: 'details',
                parentNavigatorKey: _rootNavigatorKey,
                builder: (BuildContext context, GoRouterState state) {
                  return const DetailsScreen(label: 'B');
                },
              ),
            ],
          ),

          /// The third screen to display in the bottom navigation bar.
          GoRoute(
            path: '/c',
            builder: (BuildContext context, GoRouterState state) {
              return const ScreenC();
            },
            routes: <RouteBase>[
              // The details screen to display stacked on the inner Navigator.
              // This will cover screen A but not the application shell.
              GoRoute(
                path: 'details',
                builder: (BuildContext context, GoRouterState state) {
                  return const DetailsScreen(label: 'C');
                },
              ),
            ],
          ),
        ],
      ),
    ],
  );

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      routerConfig: _router,
    );
  }
}

/// Builds the "shell" for the app by building a Scaffold with a
/// BottomNavigationBar, where [child] is placed in the body of the Scaffold.
class ScaffoldWithNavBar extends StatelessWidget {
  /// Constructs an [ScaffoldWithNavBar].
  const ScaffoldWithNavBar({
    required this.child,
    super.key,
  });

  /// The widget to display in the body of the Scaffold.
  /// In this sample, it is a Navigator.
  final Widget child;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: child,
      bottomNavigationBar: BottomNavigationBar(
        items: const <BottomNavigationBarItem>[
          BottomNavigationBarItem(
            icon: Icon(Icons.home),
            label: 'A Screen',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.business),
            label: 'B Screen',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.notification_important_rounded),
            label: 'C Screen',
          ),
        ],
        currentIndex: _calculateSelectedIndex(context),
        onTap: (int idx) => _onItemTapped(idx, context),
      ),
    );
  }

  static int _calculateSelectedIndex(BuildContext context) {
    final String location = GoRouterState.of(context).location;
    if (location.startsWith('/a')) {
      return 0;
    }
    if (location.startsWith('/b')) {
      return 1;
    }
    if (location.startsWith('/c')) {
      return 2;
    }
    return 0;
  }

  void _onItemTapped(int index, BuildContext context) {
    switch (index) {
      case 0:
        GoRouter.of(context).go('/a');
        break;
      case 1:
        GoRouter.of(context).go('/b');
        break;
      case 2:
        GoRouter.of(context).go('/c');
        break;
    }
  }
}

/// The first screen in the bottom navigation bar.
class ScreenA extends StatelessWidget {
  /// Constructs a [ScreenA] widget.
  const ScreenA({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            const Text('Screen A'),
            TextButton(
              onPressed: () {
                GoRouter.of(context).go('/a/details');
              },
              child: const Text('View A details'),
            ),
          ],
        ),
      ),
    );
  }
}

/// The second screen in the bottom navigation bar.
class ScreenB extends StatelessWidget {
  /// Constructs a [ScreenB] widget.
  const ScreenB({super.key});

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          const Text('Screen B'),
          TextButton(
            onPressed: () {
              GoRouter.of(context).go('/b/details');
            },
            child: const Text('View B details'),
          ),
        ],
      ),
    );
  }
}

/// The third screen in the bottom navigation bar.
class ScreenC extends StatelessWidget {
  /// Constructs a [ScreenC] widget.
  const ScreenC({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            const Text('Screen C'),
            TextButton(
              onPressed: () {
                GoRouter.of(context).go('/c/details');
              },
              child: const Text('View C details'),
            ),
          ],
        ),
      ),
    );
  }
}

/// The details screen for either the A, B or C screen.
class DetailsScreen extends StatelessWidget {
  /// Constructs a [DetailsScreen].
  const DetailsScreen({
    required this.label,
    super.key,
  });

  /// The label to display in the center of the screen.
  final String label;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Details Screen'),
      ),
      body: Center(
        child: Text(
          'Details for $label',
          style: Theme.of(context).textTheme.headlineMedium,
        ),
      ),
    );
  }
}

Okay I get it. From what I can see, the builder is not being called during the transition, but rather only after the transition is over. I changed the background color of ScaffoldWithNav to red, and you can see in the video below that the red background only appears after the animation. I am not sure if this is intended behavior, therefore I'll label the issue for further insights from the team

Code Sample
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

final GlobalKey<NavigatorState> _rootNavigatorKey =
    GlobalKey<NavigatorState>(debugLabel: 'root');
final GlobalKey<NavigatorState> _shellNavigatorKey =
    GlobalKey<NavigatorState>(debugLabel: 'shell');

// This scenario demonstrates how to set up nested navigation using ShellRoute,
// which is a pattern where an additional Navigator is placed in the widget tree
// to be used instead of the root navigator. This allows deep-links to display
// pages along with other UI components such as a BottomNavigationBar.
//
// This example demonstrates how to display a route within a ShellRoute and also
// push a screen using a different navigator (such as the root Navigator) by
// providing a `parentNavigatorKey`.

void main() {
  runApp(ShellRouteExampleApp());
}

/// An example demonstrating how to use [ShellRoute]
class ShellRouteExampleApp extends StatelessWidget {
  /// Creates a [ShellRouteExampleApp]
  ShellRouteExampleApp({super.key});

  final GoRouter _router = GoRouter(
    navigatorKey: _rootNavigatorKey,
    initialLocation: '/a',
    routes: <RouteBase>[
      /// Application shell
      ShellRoute(
        navigatorKey: _shellNavigatorKey,
        builder: (BuildContext context, GoRouterState state, Widget child) {
          return ScaffoldWithNavBar(child: child);
        },
        routes: <RouteBase>[
          /// The first screen to display in the bottom navigation bar.
          GoRoute(
            path: '/a',
            builder: (BuildContext context, GoRouterState state) {
              return const ScreenA();
            },
            routes: <RouteBase>[
              // The details screen to display stacked on the inner Navigator.
              // This will cover screen A but not the application shell.
              GoRoute(
                path: 'details',
                builder: (BuildContext context, GoRouterState state) {
                  return const DetailsScreen(label: 'A');
                },
              ),
            ],
          ),

          /// Displayed when the second item in the the bottom navigation bar is
          /// selected.
          GoRoute(
            path: '/b',
            builder: (BuildContext context, GoRouterState state) {
              return const ScreenB();
            },
            routes: <RouteBase>[
              /// Same as "/a/details", but displayed on the root Navigator by
              /// specifying [parentNavigatorKey]. This will cover both screen B
              /// and the application shell.
              GoRoute(
                path: 'details',
                parentNavigatorKey: _rootNavigatorKey,
                builder: (BuildContext context, GoRouterState state) {
                  return const DetailsScreen(label: 'B');
                },
              ),
            ],
          ),

          /// The third screen to display in the bottom navigation bar.
          GoRoute(
            path: '/c',
            builder: (BuildContext context, GoRouterState state) {
              return const ScreenC();
            },
            routes: <RouteBase>[
              // The details screen to display stacked on the inner Navigator.
              // This will cover screen A but not the application shell.
              GoRoute(
                path: 'details',
                builder: (BuildContext context, GoRouterState state) {
                  return const DetailsScreen(label: 'C');
                },
              ),
            ],
          ),
        ],
      ),
    ],
  );

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      routerConfig: _router,
    );
  }
}

/// Builds the "shell" for the app by building a Scaffold with a
/// BottomNavigationBar, where [child] is placed in the body of the Scaffold.
class ScaffoldWithNavBar extends StatelessWidget {
  /// Constructs an [ScaffoldWithNavBar].
  const ScaffoldWithNavBar({
    required this.child,
    super.key,
  });

  /// The widget to display in the body of the Scaffold.
  /// In this sample, it is a Navigator.
  final Widget child;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.red,
      body: child,
      bottomNavigationBar: BottomNavigationBar(
        items: const <BottomNavigationBarItem>[
          BottomNavigationBarItem(
            icon: Icon(Icons.home),
            label: 'A Screen',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.business),
            label: 'B Screen',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.notification_important_rounded),
            label: 'C Screen',
          ),
        ],
        currentIndex: _calculateSelectedIndex(context),
        onTap: (int idx) => _onItemTapped(idx, context),
      ),
    );
  }

  static int _calculateSelectedIndex(BuildContext context) {
    final String location = GoRouterState.of(context).location;
    if (location.startsWith('/a')) {
      return 0;
    }
    if (location.startsWith('/b')) {
      return 1;
    }
    if (location.startsWith('/c')) {
      return 2;
    }
    return 0;
  }

  void _onItemTapped(int index, BuildContext context) {
    switch (index) {
      case 0:
        GoRouter.of(context).go('/a');
        break;
      case 1:
        GoRouter.of(context).go('/b');
        break;
      case 2:
        GoRouter.of(context).go('/c');
        break;
    }
  }
}

/// The first screen in the bottom navigation bar.
class ScreenA extends StatelessWidget {
  /// Constructs a [ScreenA] widget.
  const ScreenA({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            const Text('Screen A'),
            TextButton(
              onPressed: () {
                GoRouter.of(context).go('/a/details');
              },
              child: const Text('View A details'),
            ),
          ],
        ),
      ),
    );
  }
}

/// The second screen in the bottom navigation bar.
class ScreenB extends StatelessWidget {
  /// Constructs a [ScreenB] widget.
  const ScreenB({super.key});

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          const Text('Screen B'),
          TextButton(
            onPressed: () {
              GoRouter.of(context).go('/b/details');
            },
            child: const Text('View B details'),
          ),
        ],
      ),
    );
  }
}

/// The third screen in the bottom navigation bar.
class ScreenC extends StatelessWidget {
  /// Constructs a [ScreenC] widget.
  const ScreenC({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            const Text('Screen C'),
            TextButton(
              onPressed: () {
                GoRouter.of(context).go('/c/details');
              },
              child: const Text('View C details'),
            ),
          ],
        ),
      ),
    );
  }
}

/// The details screen for either the A, B or C screen.
class DetailsScreen extends StatelessWidget {
  /// Constructs a [DetailsScreen].
  const DetailsScreen({
    required this.label,
    super.key,
  });

  /// The label to display in the center of the screen.
  final String label;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Details Screen'),
      ),
      body: Center(
        child: Text(
          'Details for $label',
          style: Theme.of(context).textTheme.headlineMedium,
        ),
      ),
    );
  }
}

Video demonstration
https://user-images.githubusercontent.com/50555895/226354870-f5323723-2fae-4e40-89db-3da2ec47f01a.mp4

flutter doctor -v (Master)
[!] Flutter (Channel master, 3.9.0-11.0.pre.7, on Microsoft Windows [Version 10.0.22621.1413], locale en-US)
    • Flutter version 3.9.0-11.0.pre.7 on channel master at C:\Users\Nabeel\fvm\versions\master
    ! The flutter binary is not on your path. Consider adding C:\Users\Nabeel\fvm\versions\master\bin to your path.
    ! Warning: `dart` on your path resolves to C:\tools\dart-sdk\bin\dart.exe, which is not inside your current Flutter SDK checkout at C:\Users\Nabeel\fvm\versions\master. Consider adding C:\Users\Nabeel\fvm\versions\master\bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 1cd55934f9 (41 minutes ago), 2023-03-20 02:26:27 -0400
    • Engine revision 19a5f61ff7
    • Dart version 3.0.0 (build 3.0.0-339.0.dev)
    • DevTools version 2.22.2
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Windows Version (Installed version of Windows is version 10 or higher)

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at C:\android-sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: C:\Users\Nabeel\AppData\Local\JetBrains\Toolbox\apps\AndroidStudio\ch-0\221.6008.13.2211.9514443\jbr\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-9505619)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • CHROME_EXECUTABLE = C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2022 17.5.0)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.5.33414.496
    • Windows 10 SDK version 10.0.22621.0

[✓] Android Studio (version 2021.3)
    • Android Studio at C:\Users\Nabeel\AppData\Local\JetBrains\Toolbox\apps\AndroidStudio\ch-0\213.7172.25.2113.9014738
    • Flutter plugin version 71.2.3
    • Dart plugin version 213.7433
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] Android Studio (version 2022.1)
    • Android Studio at C:\Users\Nabeel\AppData\Local\JetBrains\Toolbox\apps\AndroidStudio\ch-0\221.6008.13.2211.9514443
    • Flutter plugin version 72.0.2
    • Dart plugin version 221.6096
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-9505619)

[✓] VS Code (version 1.76.2)
    • VS Code at C:\Users\Nabeel\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.46.0

[✓] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.22621.1413]
    • Chrome (web)      • chrome  • web-javascript • unknown
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 109.0.1518.78

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

I'm getting what I believe to be the same issue. A short code example is below with a screen recording of what happens.
Code
import 'package:flutter/material.dart';
import 'package:flutter_web_plugins/url_strategy.dart';
import 'package:go_router/go_router.dart';

void main() {
  usePathUrlStrategy();
  runApp(
    const MyApp(),
  );
}

final _router = GoRouter(
  initialLocation: "/route1",
  routes: [
    ShellRoute(
      routes: [
        GoRoute(
          path: "/route1",
          builder: (context, state) => const Placeholder(),
        ),
        GoRoute(
          path: "/route2",
          builder: (context, state) => const Placeholder(),
        ),
      ],
      builder: (context, state, child) {
        return Scaffold(
          body: child,
          bottomNavigationBar: NavigationBar(
            onDestinationSelected: (value) {
              if (value == 0) {
                context.go("/route1");
              } else {
                context.go("/route2");
              }
            },
            destinations: const [
              NavigationDestination(
                icon: Icon(Icons.home),
                label: "route1",
              ),
              NavigationDestination(
                icon: Icon(Icons.home),
                label: "route2",
              ),
            ],
          ),
        );
      },
    )
  ],
);

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      routerConfig: _router,
    );
  }
}

https://github.com/flutter/flutter/assets/28501204/cdcafc2e-eaa6-42b2-a1fb-8e6e72c069ee

I'm getting this issue as well! I don't feel like this should be WAI, I don't think we should have to nest Scaffolds

Any update on this?
I know the team has a lot of work to do already, but this problem has exists for a while. I would have liked to participate and make a pull request, but unfortunately I don't master flutter at this point

Facing the exact same issue using Gorouter ShellRotue

yep, same here.
I had to do this because I don't want to use scaffolds in all my screens
         GoRoute(           path: Routes.collectionsScreen,           pageBuilder: (context, state) {             return const NoTransitionPage(child: CollectionsScreen());           },         ),

I am still having this issue :/

Facing the exact same issue. Using nested scaffolds for now..

Hello everyone, I found this solution
class BottomDestination {
  final String label;
  final IconData icon;

  const BottomDestination({required this.label, required this.icon});
}

const destinations = [
  BottomDestination(label: 'Поставки', icon: Icons.widgets),
  BottomDestination(label: 'Обновить Карточки', icon: Icons.storage),
];

final _rootNavigatorKey = GlobalKey<NavigatorState>(debugLabel: 'root');
final router = GoRouter(
  initialLocation: PathKeys.supplieses(),
  navigatorKey: _rootNavigatorKey,
  routes: [
    StatefulShellRoute.indexedStack(
        builder: (context, state, navigationShell) =>
            LayoutScaffold(navigationShell: navigationShell),
        branches: [
          StatefulShellBranch(routes: [
            GoRoute(
                path: PathKeys.supplieses(),
                builder: (context, state) => const SuppliesesPage())
          ]),
          StatefulShellBranch(routes: [
            GoRoute(
                path: PathKeys.uploadExelFile(),
                builder: (context, state) => const DatabasePage())
          ]),
        ])
],
);

class LayoutScaffold extends StatelessWidget {
  const LayoutScaffold({required this.navigationShell, super.key});

  final StatefulNavigationShell navigationShell;

  @override
  Widget build(BuildContext context) {
    LinearGradient gradient = const LinearGradient(
        colors: [Color(0xff33265a), Color(0xff1c1925), Color(0xff382375)],
        begin: Alignment.topRight,
        end: Alignment.bottomLeft,
        tileMode: TileMode.clamp);

    return Scaffold(
      extendBody: true,
      resizeToAvoidBottomInset: false,
      backgroundColor: Colors.transparent,
      body: Container(
          decoration: BoxDecoration(gradient: gradient),
          child: navigationShell),
      bottomNavigationBar: ClipRRect(
        borderRadius: const BorderRadius.all(Radius.circular(25)),
        child: BackdropFilter(
          filter: ImageFilter.blur(sigmaX: 5, sigmaY: 15),
          child: NavigationBar(
              surfaceTintColor: Colors.amber,
              elevation: 0,
              selectedIndex: navigationShell.currentIndex,
              onDestinationSelected: navigationShell.goBranch,
              backgroundColor: Colors.grey.withOpacity(0.11),
              indicatorColor: Colors.transparent,
              labelBehavior:
                  NavigationDestinationLabelBehavior.onlyShowSelected,
              destinations: destinations
                  .map(
                    (destination) => NavigationDestination(
                      icon: Icon(destination.icon),
                      label: destination.label,
                      selectedIcon: Icon(destination.icon, color: Colors.white),
                    ),
                  )
                  .toList()),
        ),
      ),
    );
  }
}

I don't know if this solution is correct, but maybe it will help someone
finall result:


[time table] fix reversed ratio

Coverage increased (+0.08%) to 70.087% when pulling f9252372b11ac06616dc23612fb0cb3b9336a6e5 on mistercrunch:fix_time_table into ff268a75261343e08be11f72b9c23c63e8012dcc on apache:master.

Coverage increased (+0.08%) to 70.087% when pulling f9252372b11ac06616dc23612fb0cb3b9336a6e5 on mistercrunch:fix_time_table into ff268a75261343e08be11f72b9c23c63e8012dcc on apache:master.

Coverage increased (+0.08%) to 70.087% when pulling f9252372b11ac06616dc23612fb0cb3b9336a6e5 on mistercrunch:fix_time_table into ff268a75261343e08be11f72b9c23c63e8012dcc on apache:master.


Consider the open symbol keybinding as the default keybinding for Terminal: open detected link

It's similar functionality to symbol search and probably won't conflict with shell hotkeys

To verify, ensure ctrl/cmd+shift+o triggers the open detected link command


Issue with /docs/tutorials/stateful-application/basic-stateful-set/

This is a...

[ ] Feature Request
[x] Bug Report

Problem:
The title of this page is wrong, should be "StatefulSet Basics" instead of "Running ZooKeeper, A CP Distributed System". But when I click "Edit this page", it links to .../zookeeper.md. I couldn't figure out how to fix.
Proposed Solution:
Page to Update:
http://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/

Seems to be fixed, I'd be interested in knowing how

The title issue was affecting many pages, not just this one. For reference, see https://github.com/kubernetes/kubernetes.github.io/issues/1959 and https://github.com/kubernetes/kubernetes.github.io/issues/1923.

it looks like this was fixed by #1994 and #1942 when changes were made to how pages were titled


Introduce and use static backup for network lottie element

based on #156 to avoid conflicts
Introduces and puts to use a static backup for the network lottie element which is meant to be shown on the strengthen bitcoin onboarding page. The svg file has been provided by @GBKS. The png was created with inkscape, and run through the optimize-pngs.py script; the output of the script is as follows:
optimizing network-dark.png... done
optimizing network-light.png... done
summary:
+++++++++++++++++
network-dark.png
  size diff from: 34413 to: 25693
  old sha256: 60f8cfd5c65edd4a152086cfcae72b580bf60dafd753929ae65ee509be88d24b
  new sha256: 9be93ea8b2c7df192d031b16817a7c9112ef752a5cf140206431b1bb467e42f5

network-light.png
  size diff from: 41530 to: 26290
  old sha256: b989ba4e59045cbb40cc138395c1285713c866e783cd4e09df152592596d0011
  new sha256: ae3e3ef968d7886bca34e46de04dcdbcb62c66efb81254318c2bf6f93b200e60

completed. Checksum stable: False. Total reduction: 23960 bytes

Light Mode
Dark Mode

setting as draft until we have a static backup that works with light mode

updated from 6cc4e1d to 73d6d2a
changes; Rebased over master, use updated svg elements, allow UI to switch between the light and dark backup

updated from 73d6d2a to 1060380
changes: fix issue with make file

Rebase?

updated from 1060380 to 88f9df4
changes: rebased over master


virtual declarations missing for get_constrained_sizedtypes() and get_constrained_sizedtypes() in model_base

Summary:
stanc outputs methods for returning a json-formatted string of the parameter metadata, like the following for the bernoulli model:
  inline std::string get_constrained_sizedtypes() const {
    return std::string("[{\"name\":\"theta\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"}]");
  }
  inline std::string get_unconstrained_sizedtypes() const {
    return std::string("[{\"name\":\"theta\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"}]");
  }

But these methods don't have corresponding virtual methods in src/model/model_base.hpp
Current Version:
v2.31.0

I’m not sure why these methods exist in the generated model to be honest, since nothing currently seems to use them.
Do you have a use in mind for them?

Another option could be to parse the output of unconstrained_param_names(), but also open to other suggestions if there's something obvious I'm missing!

I was after a way of getting the dimensions of the unconstrained parameters

What's the eventual goal?
I missed when those functions got added and would not have approved.  I don't see the point of get_constrained_sizetypes() (or the prefix "get_"), as it just returns a string encoding name/size pairs.  It'd be better to return a pair consisting of a std::vector<std::string> of strings and a std::vector<size_t> of sizes.

They were added back in 2019 but never exposed or used anywhere: https://github.com/stan-dev/stanc3/pull/226
Using std::vector<size_t> for objects is more or less singlehandedly holding up the tuples PR at this point, so avoiding using that is a win in my eyes.
The JSON these return is much richer anyway since it lets you distinguish matrix[3,2] and array[3,2] real, for example, and is probably the part of the compiler which was most ready for tuples/non-rectangular types, and would probably be useful for cmdstanpy/r when it comes time to process CSV outputs which contain tuples

What's the eventual goal?

I'm updating the handling of unconstrained pars in cmdstanr to be structured using the draws formats from posterior (motivation in this issue).
For that I need to know their dimensions - given that they can differ from the constrained parameter dimensions returned by get_dims()

I wrote back on the original issue asking why.   I don't understand the motivation and have the same concerns as @mitzimorris expressed about the proposed solution.
I've always found the R devs to have almost diametrically opposed preferences to mine, which is for minimal but composable (i.e., unix-like) APIs.  For example, I prefer the simple direct manipulations of NumPy to the do-it-all functions of the Tidyverse.

I wrote back on the original issue asking why. I don't understand the motivation and have the same concerns as @mitzimorris expressed about the proposed solution.

Note that the proposed solution from the linked post (a named list) has since been eschewed in favour of the draws formats - which is what the results of sampling/optimisation/etc (i.e., the constrained parameters) currently use. In other words, it's aligning the APIs for the constrained and unconstrained parametetrs.
At a higher level, the motivation is that there are multiple use-cases which need to operate on the unconstrained parameters (e.g., moment-matching, power-scaling, plotting).  Users/packages currently need to manually track the indexes of particular parameters in the single unlabeled numeric vector of values when they're performing operations or constructing their own unconstrained parameter inputs - not very user-friendly or robust to error.
Additionally, the current single numeric vector structure isn't terribly amenable to a workflow operating on multiple iterations across multiple chains.
Given that we have an existing API in the draws format for operating on parameters from multiple chains, as well as access to the model functions for unconstrained parameter dimensions, it seems like a good quality-of-life improvement for users

And also to clarify that the proposed solution in the linked post was to use the existing structure for specifying initial values that is used by both rstan and cmdstanr


I selected a pdf instead of todo.txt and the extension doesn't work anymore

Even when reinstalled, all the info, i.e. alarms, stays there, including the pdf that's braking the extension.
Where do I reset the extension state, to be able to start from zero?.

No clue. I guess reinstall it. Cache files for your alarms and other things are in: ~/.cache/timepp_gnome_shell_extension. I don't exactly remember whether you have to back them up before reinstalling the extension.
If you wanna bother you can open a  terminal and type:
journalctl /usr/bin/gnome-shell -r | less

See if there are any errors related to timepp in there.

No clue. I guess reinstall it. Cache files for your alarms and other things are in: ~/.cache/timepp_gnome_shell_extension. I don't exactly remember whether you have to back them up before reinstalling the extension.
If you wanna bother you can open a  terminal and type:
journalctl /usr/bin/gnome-shell -r | less

See if there are any errors related to timepp in there.

Oh I just noticed you already reinstalled the extension. The todo files you opened are stored in ~/.cache/timepp_gnome_shell_extension/timepp_todo.json . Just edit or delete this file.

Oh I just noticed you already reinstalled the extension. The todo files you opened are stored in ~/.cache/timepp_gnome_shell_extension/timepp_todo.json . Just edit or delete this file.

This was it. It solved it. Thank you @zagortenay333 .
I have a suggestion. Make the counter of tasks be consistent with filtering. I.e. if I filter tasks by @some_tag, I'd like the counter to show me the count of the tasks filtered only. Maybe you can make it an option.

Great extension. Have a nice day.

Glad it worked. As for the counter, I won't probably add features to this extension anymore. It's mostly in low maintainance.


CR-5686

Codecov Report

Merging #34 (3c5be02) into main (e917251) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #34   +/-   ##
=======================================
  Coverage   25.13%   25.13%
=======================================
  Files           1        1
  Lines         187      187
=======================================
  Hits           47       47
  Misses        134      134
  Partials        6        6

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e917251...3c5be02. Read the comment docs.


No wonder OSVR didn't do anything on linux

It's not perfect, but it picks up tracking. I have a feeling it's only orientation and not position tracking, but that's only a minor detail to fix I guess.
It also only works with an unrotated rift, so this video is rotated for displaying on youtube:
https://www.youtube.com/watch?v=J0_F_oBkQDk

From the looks of your video, it appears your glm library might be interpreting radian rotation values as degrees(that should be two concentric rings of cubes). Are you perhaps using an older(<0.9.5) version of glm, or have GLM_FORCE_RADIANS turned off? relevant post
Still working on that OSVR Oculus Rift plugin build...

Got the plugin building and fixed the SDL/OSVR target to correctly place the window at 0,0 on its own X Screen. I notice a lot of tracking latency with VSync on, so turned it off by default. Both positional and rotation tracking work fine on my system - I'd be curious to hear if it works for you.

You are right, I had a very old glm package installed. With an up to date one, rotation works right so you can revert https://github.com/ChristophHaag/RiftSkeleton/commit/4bb04354025890bdb5234afe6ad4c45eef038de3.
Now the only thing left to do is to automatically match the rotation, i.e. render in 1080x1920 with an unrotated rift and in 1920x1080 @ 90° rotated when it is rotated. I looked a bit through the code and there are several places where width and height have simply been switched and that's not the most intuitive way...


Appstudio update test-component-pac-wttw

Pipelines as Code configuration proposal

Pipelines as Code CI/test-component-pac-wttw-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
7 seconds
init

✅ Succeeded
22 seconds
clone-repository

✅ Succeeded
59 seconds
build-container

✅ Succeeded
18 seconds
deprecated-base-image-check

✅ Succeeded
3 minutes
clair-scan

✅ Succeeded
16 seconds
sanity-inspect-image

✅ Succeeded
46 seconds
clamav-scan

✅ Succeeded
16 seconds
sbom-json-check

✅ Succeeded
10 seconds
sanity-label-check

✅ Succeeded
9 seconds
sanity-optional-label-check

✅ Succeeded
5 seconds
show-summary

Pipelines as Code CI/test-component-pac-wttw-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
6 seconds
init

✅ Succeeded
13 seconds
clone-repository

✅ Succeeded
41 seconds
build-container

✅ Succeeded
13 seconds
deprecated-base-image-check

✅ Succeeded
14 seconds
sanity-inspect-image

✅ Succeeded
12 seconds
clair-scan

✅ Succeeded
31 seconds
clamav-scan

✅ Succeeded
8 seconds
sbom-json-check

✅ Succeeded
15 seconds
sanity-optional-label-check

✅ Succeeded
14 seconds
sanity-label-check

✅ Succeeded
5 seconds
show-summary

Pipelines as Code CI/test-component-pac-wttw-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
6 seconds
init

✅ Succeeded
13 seconds
clone-repository

✅ Succeeded
41 seconds
build-container

✅ Succeeded
13 seconds
deprecated-base-image-check

✅ Succeeded
12 seconds
clair-scan

✅ Succeeded
14 seconds
sanity-inspect-image

✅ Succeeded
31 seconds
clamav-scan

✅ Succeeded
8 seconds
sbom-json-check

✅ Succeeded
15 seconds
sanity-optional-label-check

✅ Succeeded
14 seconds
sanity-label-check

✅ Succeeded
5 seconds
show-summary


Python "dumps" function for simple geometries

Add "dumps" function to convert a Shapely geometry to index and coordinate arrays. The function will likely return an AbstractCFGeometry object with attached arrays and attributes.

Initial cf.dumps implementation is available in master. It will create a CF object representation for each supported geometry type: https://github.com/bekozi/netCDF-CF-simple-geometry/blob/a3e1663695c68fb8b255d4b8c3feffcea0b59e47/src/python/ncsg/cf.py#L10.


tfx build tasks upload IISWebAppManagementOnMachineGroup cannot see on TFS 2017 UI

Hello,
I have uploaded(successfully) the IISWebAppManagementOnMachineGroup  task but I cannot it on TFS 2017 UI.
tfx build tasks upload --task-path ./IISWebAppDeploymentOnMachineGroup
Any idea how to use it from TFS 2017 ?

@plemanach The task comes along with Deployment Groups feature which isn't available in TFS 2017 yet. It will be avaliable with TFS 2018. Learn more here.

Hi @plemanach closing this one since it seems to be resolved - please let us know if you have any other questions.