Don't assume cache line sizes are fixed during program execution

... not even from one instruction to the next one.
Any scheme where software reads the cache line size from a CSR or queries to OS for it and then remembers it is prone to failure as soon as you have multi-core heterogeneous systems with different cache block sizes and process migration between them.
It doesn't make any difference whether the cache line size is queried once at the start of the program, before every loop, or even immediately before/after the CMO instruction. The process can and eventually will get migrated at exactly the wrong time.
This issue caused actual extremely hard to reproduce and debug system crashes on one model of mobile phone in a previous job. The phone contained standard ARM "LITTLE" cores and company designed "big" cores. The cores had different cache line sizes. When the problem was diagnosed ARM was asked how they dealt with SoCs with cores with different line sizes. Their answer "We don't do that!"
I think it's an entirely reasonable thing to do and should be allowed for in the design of CMOs intended to be used in cores from many organisations over a long period of time.
My suggestion is that the actual CMO instruction should return the number of bytes it operated on for that particular execution -- and hence the amount the pointer should be advanced by.
If the address given for the CMO is in the middle of a cache line then the return value should be the number of bytes in the rest of the cache line, to allow software to align the pointer to the cache line start for the next iteration.
In the case of a destructive operation such as DCBZ the hardware could choose whether to zero the partial block and report that as normal, or the return value could could somehow indicate that nothing was done. Software could then either ignore it (if it doesn't really care whether the contents are zero or not and the line is either already in the cache or else will be fetched as usual when next referenced) or else manually zero those bytes. The most natural way to indicate this might be to return the negation of the number of bytes that should have been operated on but weren't. Or perhaps set the high bit, which would allow an unconditional & 0x7FF or similar for software that doesn't care (would fail if cache lines can ever be 2K or more).
NB this can be needed on any iteration, not only the first, if the process is migrated from a core with a small cache line size to a core with a large cache line size.

This is a good point. Because of migration, you do want an atomic way of determining how much data was operated on. Reading a CSR and executing a CMO is not atomic, even if you read the CSR before, after, or both.
I would generally advocate for returning the number of bytes operated on, independent of the start address, however. This allows a simple implementation to return a constant rather than put an incrementor/adder in the result path. For most designs (?), the result would represent an aligned-block of memory that contains the address (but I suppose some SW might want a different interpretation?). SW would be responsible fixing up the next address (most likely just adding the return value).
This works for certain use cases, but wouldn't work if you wanted to operate on a precise number of bytes (e.g. memzero).

I have a lengthy proposal both on instruction shape and on a way to deal with time-variant cache line sizes that will be getting dropped in the group a bit later this week (a quick pass is being done now to remove spelling/grammar mistakes). The proposal provides for time-variance where it's safe and well defined to do so.
Look for this proposal sometime this week.

Additionally, the cache line size / number of bytes affected may also differ at different levels of the cache hierarchy, or different caches at the same level (e.g. Instruction versus Data caches).
I wonder whether a CMO returning the number of bytes affected is too CISC-y.
Could software instead do the Right Thing (TM), i.e. functionally correct but simpler and slower, if the cache line size discovery mechanism returned a mask of all the cache line sizes in use in the coherence domain?

It seems like "differing cache lines sizes in a system" overstates the
issue.  All the caching agents within a coherence domain need to understand
one common coherence granule that coherence protocol actions are in terms
of (at least for virtually all commercial coherence protocols).  Within
that domain there may be caches with larger or smaller line sizes.  For
caches with smaller lines sizes, they still need to perform coherence
protocol actions (request, snoops, etc.) in terms of the coherence granule
size (e.g. give up two cache lines when a request or snoop for ownership is
received).  For caches with larger line sizes, they either have sectors
equal in size to the coherence granule or they again must privately deal
with the mismatch between their local cache line size and the size of
coherence protocol actions.  Put differently, a hart and its cache can
locally perform CMO's of that cache's line size, but all that has to be
locally and privately reconciled with all resulting global coherence
protocol actions being in terms of the coherence granule size.
Where the problem can creep in is when code loops through a series of CMOs
with an initial cache line size stride length, and then that code migrates
to a hart with a smaller cache line size.  But if CMOs are instead defined
in terms of the coherence domain-wide coherence granule size, and software
uses a stride length equal to that coherence granule size, then everything
can work out alright.  In particular, the hardware of any hart with a
larger or smaller cache size must already understand at a hardware level
the coherence granule size for the coherence domain it is participating in,
and should perform CMOs effectively to that coherence granule size (or
larger).
I expect the counter-argument to all this is that people want to have
non-coherent hart caches that depend on software to manage coherency.  Such
as arises with ARM big.Little systems that have non-coherent
instruction caches and potentially differing cache line sizes. But is that
what this group is trying to cater to (especially since RISC-V starts off
with a bias or expectation that hart instruction caches are hardware
coherent)?  Versus providing CMO's to handle data sharing between
coherently-caching harts and other non-caching agents (e.g. DMA masters
wanting to do non-coherent I/O to/from memory).
If the answer is the former, then one solution (albeit sub-optimal) could
be for all software to assume the smallest cache line size in the system.
(Or Derek's coming proposal probably has a better solution.)  But is this
type of system design, and with differing non-coherent hart cache line
sizes, the tail that's wagging the dog?
OK, I'll stop there - having stirred the pot enough.
Greg

Thanks for the thorough reply Greg!  Yours are always worth the read.

the hardware of any hart with a
larger or smaller cache size must already understand at a hardware level
the coherence granule size for the coherence domain it is participating in,
and should perform CMOs effectively to that coherence granule size

I worry that this places an additional complexity cost or configuration restriction on composing hardware blocks into a system, and that this is avoidable by exposing the range.
Sure, if the same IP block hard macro can be instantiated with same-or-different next-level cache line size, then add inputs to it.
Sure, if a chip can be hot-plugged to another chip with same-or-different cross-chip cache line size, then either assume it's always there, or discover and program it on the fly.
So yes, it is solvable in hardware, but it is hardware's (and hardware verification's) burden, and I'm brainstorming ways to shift that burden to software (RISC vs CISC again).
I'll loosely use ARMv8 terms for a contrived example, with the instruction DCZVA writing to a NAPOT memory block of size reported by DCZID.
Greg, you suggest:

In a system with DCZID reporting 64-byte memory block size but 32-byte cache line size, hardware executing a DCZVA instruction would need to zero two cache lines.  Do-able, but the hardware to span multiple cache lines with a single instruction isn't free.
In a system with DCZID reporting 32-byte memory block size but 64-byte cache line size, hardware executing a DCZVA instruction would need to zero a sub-cache-line sector.  Do-able, but the hardware to track sectors isn't free.

I suggest that we augment DCZID to report both 32- and 64-byte memory block and cache line sizes in the system.  All of these instruction sequences should be agnostic of whether they are operating on either the 32-byte or 64-byte cache lines.

Software wishing to zero 32 bytes would see that range as smaller than 64 bytes (the maximum cache line size), and execute store instructions:

STR XZR, [#0x00]
STR XZR, [#0x08]
STR XZR, [#0x10]
STR XZR, [#0x18]

Software wishing to zero 64 bytes would see that range as evenly divisible by 64 bytes (the maximum cache line size), and execute DCZVA instructions at 32-byte granularity (the smallest cache line size).  This is relying on hardware gathering the back-to-back DCZVA instructions, which isn't free, but is easier than spanning cache lines or tracking sectors.

DCZVA [#0x00]
DCZVA [#0x20]

Software wishing to zero 96 bytes would execute DCZVA instructions at 32-byte granularity (the smallest cache line size) for the first 64 bytes (the maximum cache line size), then execute stores for the remainder.

DCZVA [#0x00]
DCZVA [#0x20]
STR XZR, [#0x40]
STR XZR, [#0x48]
STR XZR, [#0x50]
STR XZR, [#0x58]

I wonder if this portable software (tolerant of multiple cache line sizes) would have worked as a software work-around for the specific case that @brucehoult encountered!
Aside: you mentioned I-Cache software coherency, but I think Derek and the J-Extension are leading that, so this riscv-CMOs group is focusing on CMOs to handle data sharing, per https://github.com/riscv/riscv-CMOs/wiki/CMOs-WG-Draft-Proposed-Charter.


Visual testing: Add chromatic to the repo

We have a build! ✨
https://www.chromatic.com/build?appId=61a90feace7802003a4d9c45&number=1
Need to merge this into master and the next PR would have a nice visual diff :)
Here's a sample build where i changed the padding in BaseButton to see a cascading diff: https://www.chromatic.com/build?appId=61a90feace7802003a4d9c45&number=3

Hey friend! Just wanted to say that I'm excited to see what you're up to :)
Happy to help in any way that I can 💞


Include metric of "# of times you completed studying a line" in Evaluate mode

We only recently started reporting this statistic in Study mode: 47beb9d1bac695dd87dbcd655e2dc1d5e4fdbf73
After some amount of time when this statistic starts to be populated in prod, we can add the metric in Evaluate mode.

Done in 33e0f6c0389cde906df7fbfd23799ecc23f4bb85.


Update page title for subtopics

:warning: This application is Continuously Deployed: :warning:

Merged changes are automatically deployed to staging and production.

Make sure you follow the guidance for deployments before you merge.

Check your branch is being deployed in the Release app, after merging.

What
Updates page titles on subtopic pages and topic pages, to include the context suffix "detailed information".
Why
There are several instances of different pages that feature the same heading and page title in different parts of the site. This PR, using the detailed information title suffix, will provide a clear differentiator between specialist topics and normal browse pages. Examples of specialist topic pages:

topic
subtopic

This was decided by the content support team during an accessibility content blast day.
Visual changes
Before

After

Card: https://trello.com/c/0ckzTB40/380-update-title-and-heading-pattern-for-specialist-topic-pages

@danacotoran That's a fair point. Let me run it past the content community and see what they say. In prod currently the format seems to be:

for topic pages: topicName - GOV.UK
for subtopic pages: parentTopicName: SubtopicName - GOV.UK

This might be another case of me making an assumption about the work that needs to be done. This card has truly been a whirlwind of my ability to not understand basic instructions 😂


bump(library-go): to get API types with correct omitempty

Necessary to get new API types with fixed omitempty tags. This will avoid a couple of null values.

/lgtm


Orchestrator exception: Key None already added

Describe the bug
Using the CoreWithLanguage sample with the Orchestrator, simply saying "hi" to the bot causes an ArgumentException ("None" already added).
Version
Version:  2.1.1
Electron: 8.2.4
Chrome: 80.0.3987.165
NodeJS: 12.13.0
V8: 8.0.426.27-electron.0
Browser

[X] Electron distribution
[ ] Chrome
[ ] Safari
[ ] Firefox
[ ] Edge

OS

[ ] macOS
[X] Windows
[ ] Ubuntu

To Reproduce
Steps to reproduce the behavior:

Create an instance of the CoreWithLanguage sample
Change the root recogniser to the Orchestrator
Start the bot and say hi to it
Observe ErrorOccured:
"ClassName": "System.ArgumentException",
"Message": "An item with the same key has already been added. Key: None",

Expected behavior

UnknownIntent triggered
Screenshots

Additional context
Callstack from the trace:
at System.Collections.Generic.Dictionary2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)\r\n   at System.Collections.Generic.Dictionary2.Add(TKey key, TValue value)\r\n   at Microsoft.Bot.Builder.AI.Orchestrator.OrchestratorRecognizer.RecognizeAsync(DialogContext dc, Activity activity, CancellationToken cancellationToken, Dictionary2 telemetryProperties, Dictionary2 telemetryMetrics)\r\n   at Microsoft.Bot.Builder.Dialogs.Adaptive.Recognizers.MultiLanguageRecognizer.RecognizeAsync(DialogContext dialogContext, Activity activity, CancellationToken cancellationToken, Dictionary2 telemetryProperties, Dictionary2 telemetryMetrics)\r\n   at Microsoft.Bot.Builder.Dialogs.Adaptive.Recognizers.CrossTrainedRecognizerSet.<>c__DisplayClass7_0.<<RecognizeAsync>b__0>d.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at Microsoft.Bot.Builder.Dialogs.Adaptive.Recognizers.CrossTrainedRecognizerSet.RecognizeAsync(DialogContext dialogContext, Activity activity, CancellationToken cancellationToken, Dictionary2 telemetryProperties, Dictionary2 telemetryMetrics)\r\n   at Microsoft.Bot.Builder.Dialogs.Adaptive.Recognizers.RecognizerSet.RecognizeAsync(DialogContext dialogContext, Activity activity, CancellationToken cancellationToken, Dictionary2 telemetryProperties, Dictionary2 telemetryMetrics)\r\n   at Microsoft.Bot.Builder.Dialogs.Adaptive.AdaptiveDialog.OnRecognizeAsync(ActionContext actionContext, Activity activity, CancellationToken cancellationToken)\r\n   at Microsoft.Bot.Builder.Dialogs.Adaptive.AdaptiveDialog.ProcessEventAsync(ActionContext actionContext, DialogEvent dialogEvent, Boolean preBubble, CancellationToken cancellationToken)\r\n   at Microsoft.Bot.Builder.Dialogs.Adaptive.AdaptiveDialog.ProcessEventAsync(ActionContext actionContext, DialogEvent dialogEvent, Boolean preBubble, CancellationToken cancellationToken)\r\n   at Microsoft.Bot.Builder.Dialogs.Adaptive.AdaptiveDialog.ProcessEventAsync(ActionContext actionContext, DialogEvent dialogEvent, Boolean preBubble, CancellationToken cancellationToken)\r\n   at Microsoft.Bot.Builder.Dialogs.Adaptive.AdaptiveDialog.OnPreBubbleEventAsync(DialogContext dc, DialogEvent dialogEvent, CancellationToken cancellationToken)\r\n   at Microsoft.Bot.Builder.Dialogs.Dialog.OnDialogEventAsync(DialogContext dc, DialogEvent e, CancellationToken cancellationToken)\r\n   at Microsoft.Bot.Builder.Dialogs.DialogContainer.OnDialogEventAsync(DialogContext dc, DialogEvent e, CancellationToken cancellationToken)\r\n   at Microsoft.Bot.Builder.Dialogs.Adaptive.AdaptiveDialog.BeginDialogAsync(DialogContext dc, Object options, CancellationToken cancellationToken)\r\n   at Microsoft.Bot.Builder.Dialogs.DialogContext.BeginDialogAsync(String dialogId, Object options, CancellationToken cancellationToken)\r\n   at Microsoft.Bot.Builder.Dialogs.DialogExtensions.InnerRunAsync(ITurnContext turnContext, String dialogId, DialogContext dialogContext, CancellationToken cancellationToken)\r\n   at Microsoft.Bot.Builder.Dialogs.DialogExtensions.InternalRunAsync(ITurnContext turnContext, String dialogId, DialogContext dialogContext, DialogStateManagerConfiguration stateConfiguration, CancellationToken cancellationToken)"

@taicchoumsft assigning this to you as per our conversation offline.

@taicchoumsft Ping.

Hi @kostasvl , sorry for the late reply, and thank you for reporting this bug.
I can repro this.  To unblock you for now, can you try removing the #None labeled intents from the root dialog.  Go to User Input tab, and locate the #None Intent, and remove or rename the #None label to something else.
@daveta , it looks like this line in OrchestratorRecognizer has an issue.
The repro:
The core language template has a None intent in the LU file.
User says "hi", there is no good match, even with the None intent in the LU file,  which causes Orchestrator to return a low score below the unknownintentfilter threshold.  The results are populated in the results list, which contains a None intent.
We then add a None intent to the recognizerResult.Properties[ResultProperty] on line 171.   But that also unintentionally added it to the list declared in line 166.  recognizerResult.Properties[ResultProperty] and results list declared in line 159 are the aliased (the alias happned in line 164: recognizerResult.Properties.Add(ResultProperty, results);)
When we then do a loop in line 174, we end up adding a None result twice and causing the Intent Dictionary to throw an exception.
We probably should fix this for R15, this will end up affecting anyone who uses a specific None intent in their LU file.


Move all example code under pkg/example

We were already partially doing this for some plugins, but these ones were split between pkg/plugin and pkg/example.  i think it makes everyone's life easier if each plugin's code is centralized.
Signed-off-by: Bill Farner<EMAIL_ADDRESS>

Current coverage is 67.55% (diff: 0.00%)

Merging #314 into master will increase coverage by 13.57%

@@             master       #314   diff @@
==========================================
  Files            10         28     +18
  Lines           428       1470   +1042
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits            231        993    +762
- Misses          164        385    +221
- Partials         33         92     +59

Powered by Codecov. Last update 8ff3bf5...af38e0b

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "example-code" git@github.com:wfarner/infrakit.git somewhere
$ cd somewhere
$ git rebase -i HEAD~842354164096
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

Amending updates the existing PR. You DO NOT need to open a new one.


Sorting idea

Series sorting by aggregation func. e.g. avg, mean, last, percentile

render queue

idea - to mature

2k> items on grafana variables
integrate with simplejson to pre cache, agg and sort.
show top. render more upon scrolling down

solved


More robust output check for negative unit tests

Just counting errors is unreliable (very unreliable without non-minimal models #45) and wastes precious human cycles. We could write a little script that processes source comments in a very simple format, say:
(* BEGIN ERROR: <regexp> *)
... code that should cause error matching regexp...
(* END ERROR *)

and then matches the ranges and error messages in the F* output against the ranges and regexps of the ERROR comments.
WDYT?

Markulf suggests testing that we check automatically whether our open bugs still fail (https://github.com/FStarLang/FStar/issues/262#issuecomment-131554904). I think this would only make sense once this issue is fixed.

See also #476

As mentioned in #476 :
What about an F* flag like --expect_failure MyNegTestModule1 that would prevent to write on the standard error and display a nice “Verification failed as expected” ?

@beurdouche This issue is not only about making sure that something fails, but about making sure it fails in the right way / for the right reasons. A lot of old files will just fail for strange reasons because they are no longer maintained, and just an --expect_failure flag will not force them to keep maintaining them.
Anyway, will discuss about this issue with Nik again today.

@tahina-pro Hey Tahina. Was there any progress on this issue? If not, Tomer (@shaolintl) could look at this. Could you in any case remind us what was the design we were planning for this (i.e. what we discussed in Redmond).

There has not been much progress on the testing side, so yes, @shaolintl, you are definitely welcome to help on that.
One way we discussed was to incorporate code in the compiler itself to automatically generate test ASTs and expected failures/results at the same time, if I remember well.

Question: if this is for regression testing purpose, why not save the whole expected output to a file and check that it matches exactly? Do you expect a regexp to be significantly less brittle that the full, exact output?

One thing I've been wishing for is unique identifiers for each error -- this would make it easy to document the errors individually.

Question: if this is for regression testing purpose, why not save the whole expected output to a file and check that it matches exactly? Do you expect a regexp to be significantly less brittle that the full, exact output?

Yes, significantly less brittle. Say you want some particular assertion to fail in some piece of code, it does matter a lot that it's precisely that assertion that fails, and not some other one.

One thing I've been wishing for is unique identifiers for each error -- this would make it easy to document the errors individually.

This would indeed be great. We discussed it before and might even be filed somewhere (although I can't find it right now).

Yes, significantly less brittle. Say you want some particular assertion to fail in some piece of code, it does matter a lot that it's precisely that assertion that fails, and not some other one.

Ah, so your BEGIN ERROR blocks can be applied to subparts of a term, too? Neat.
(I'm a but confused though: the full output does identify the exact assertion that fail, doesn't it?)
I was thinking of something like let a = expected_failure "assertion-failure" assert false; assert true.

I was thinking of something like let a = expected_failure "assertion-failure" assert false; assert true.

I would personally like this over some external tool. @nikswamy @tahina-pro WDYT?

We have something mid-way now, a top-level fail attribute to check that a definition fails, and with a set specific errors. Copying from slack:

I just added a fail attribute￼￼
The easy way to use it is like

[@fail]
let foo = ...

which will succeed if foo fails to typecheck, and raise an error if not.
So [@fail] let x = 1 + 'a' succeeds.
When one is interested in the specific error numbers, there's fail_errs which takes a list of error codes.
It works as fail but will further check that the errors in the list are raised in the exact amount they appear.￼￼￼
This means

[@ (fail_errs [19;19])] let foo = ...

will succeed when foo succeeds and raises exactly two instances of error 19, but possibly more error codes too.
(Maybe we should not allow that last bit though... what do people think?)
Note that fail is really equivalent to fail_errs [].

I'll probably make the list in fail_errs exhaustive, forbidding the extra errors mentioned above. Feedback welcome!

Agreed that error list should be exhaustive, or otherwise the potential presence of extra errors should be marked somehow.

BTW: https://github.com/FStarLang/FStar/wiki/Failure-attributes. Some points on improving it:

For more robust checks, say of the error's text, we could definitely implement that. I think we've just didn't have a real need for it in these past months.

As for making the check more "local" (like let a = expected_failure "assertion-failure" assert false; assert true), I have no clue how such a thing would work. Would let a = expected_failure "assertion-failure" assert false; assert false succeed, proving false? It would unless we discard the postcondition of the failed fragment, which I just don't see flying. Or take for instance let x = (expected_failure "something" (1 + 'a')) + 2, what does that mean?

Doing top-level definitions makes all of this easier. We just check that they fail (as expected), and then basically forget about them.

I would propose we close this: we can use expect_failure to do negative unit testing, and if we are interested in the precise range or the text of the error message we can just use makefiles to compare the error output via a regex or simply a complete match. I don't expect too much brittleness there, and having many of those tests would actually help us in not inadvertently breaking ranges (which happens once in a while).

if we are interested in the precise range or the text of the error message we can just use makefiles to compare the error output via a regex or simply a complete match

Sounds great, how about we start actually doing it? :)
It's what this issue is proposing, so we can still use it to track progress.

See #1991.

Congratulations, Guido! This is a long-standing one with tons of work on your part to solve it. Much appreciated.


customLocalizedStrings not taken into account

The problem
We want to change some texts on the UI. For this we specify the object for the customLocalizedStrings with
the strings we want to display. The problem is that the component seems to ignore this, and still shows the defaults.
This is how we use it
The customization object we use:
const localizedStrings = {
    en: {
        noPstnNumbers: "There is no PSTN numbers...",
        electronloading: "The conference is loading, please wait",
        error: "Error",
        // ... the rest of the strings
    }
};

<ConferenceRoom
                customLocalizedStrings={localizedStrings}
                //.....

>

Expected Behaviour
The UI should show the "The conference is loading, please wait" message instead of the default "Voxeet is loading, please wait" before the conference is loaded.

When I take the example from this project voxeet-io-web, in the file VoxeetConference.js I add the same code as you did, what I can see is that the original text from the package is used and then after less than a second the text that I request is displayed. It looks like the code strings.setContent(customLocalizedStrings); is called too late - https://github.com/voxeet/voxeet-uxkit-react/blob/master/src/app/components/ConferenceRoom.js#L198
I will try to make some changes to see how to improve that.

It is working, thank you!!!


Only avoid glow context switching on Mac

…since it is reportedly broken on Windows

Early-out added in https://github.com/emilk/egui/pull/4284
Re-opens https://github.com/emilk/egui/issues/4173 😭
Closes https://github.com/emilk/egui/issues/4289
Closes https://github.com/emilk/egui/pull/4290

@rustbasic please test this

FWIW I'm not seeing any problems with the test_viewports example on Linux, neither on this branch nor on master.
OS: Fedora Linux 39 (Workstation Edition) x86_64
Host: Laptop (12th Gen Intel Core) A6
Kernel: 6.7.10-200.fc39.x86_64
Resolution: 2256x1504
DE: GNOME 45.5
WM: Mutter
WM Theme: Adwaita
Theme: Adwaita-dark [GTK2/3]
Icons: Adwaita [GTK2/3]
CPU: 12th Gen Intel i7-1260P (16) @ 4.700GHz
GPU: Intel Alder Lake-P GT2 [Iris Xe Graphics]
Memory: 7123MiB / 64008MiB

As a result of a short test,
It's Normal.
If any other abnormalities are found, we will notify you again.

@rustbasic please test this

As a result of a short test,
It's Normal.
If any other abnormalities are found, we will notify you again.

@YgorSouza
YgorSouza, what do you want to do in linux ?
return or not return ?

Thanks @YgorSouza - so sounds this is is a Windows-only problem then.

By the way, I just noticed another problem with this example on Linux, but I think it is unrelated to this. When I alt+tab into and out of the application a few times, eventually the viewports start hanging. But I tried the commits that reverts the early return for linux and the one that doesn't, and it seems that both have the same problem.

When I alt+tab into and out of the application a few times, eventually the viewports start hanging

And this also happens with the wgpu feature, so definitely not related to this PR. That's the only problem I found on Linux so far.


Contactus updated

Contactus updated
Description
fixed the contact page
Related Issues
#253
Type of PR

[ ] ()

Screenshots / videos (if applicable)

Checklist

[x ] I have gone through the contributing guide
[x ] I have updated my branch and synced it with project main branch before making this PR
[ x] I have performed a self-review of my code
[ x] I have tested the changes thoroughly before submitting this pull request.
[ x] I have provided relevant issue numbers, screenshots, and videos after making the changes.
[ x] I have commented my code, particularly in hard-to-understand areas.

Additional context:

@shivamv003 resolve the conflicts.


goimports: add Scheme and ability to order imports by std lib -> local -> 3rd party

The problem I am solving for is having options available to those who do not want to force the local pkgs to the bottom of the import groupings. Only one option available at this time, providing the ability to group by std lib -> local -> 3rd party. This does not change default behavior when LocalPrefix is set and Scheme is not. Will default back to the local being last in that case.

I signed it!

No sweat, it'll buff out


Negative min_response_time shown in stats

Describe the bug
Negative value shown for min_response_time:

Expected behavior
0 or positive value.
Actual behavior
Negative value shown for min_response_time
Steps to reproduce
I have a branch local docker-compose setup to reproduce it easily. But it's just 1 worker calling nginx in another docker container.
Environment

OS: Docker
Python version: -
Locust version: current master

This line is returning a negative value: https://github.com/max-rocket-internet/locust/blob/b18cf1e96646a4d43dc16f9d80e435c8f1596a33/locust/clients.py#L117
Perhaps a docker clock source issue 🤔
Docker itself just using the host clock source but docker on Mac (what I'm using) uses HyperKit VM as Mac kernel doesn't support native docker. Perhaps this VM clock source is not reliable?

There's lots of docker clock issues but as far as I can see they are related to sleep: https://github.com/moby/hyperkit/issues/110
If it was a docker issue, it would be easy to reproduce outside of locust with a file like this:
import time

while True:
    t = time.time()
    if time.time() < t:
        print('ERROR: {0} is less than {1}'.format(time.time(), t))
        break

And then run it like docker run -v $PWD:/mnt python:latest python /mnt/time_test.py

Ah, after leaving this for a while I get an error 😅
ERROR:<PHONE_NUMBER>.4236984 is less than<PHONE_NUMBER>.4583442

OK, good to know!

Should we make a change to the locust code though? Like to record the response time as 0 in this case?

Can you try replacing the two calls to time.time() with time.monotonic()?
I thought we did that a long time ago, but maybe it was only done for FastHttpUser or something.

Interesting.

Should we make a change to the locust code though? Like to record the response time as 0 in this case?

I don't think we should "hide" the clock issue by setting it to zero if it's negative.

I don't think we should "hide" the clock issue by setting it to zero if it's negative.

Makes sense

Can you try replacing the two calls to time.time() with time.monotonic()?

This solves it for me. Both in docker without locust and in my locust test.
Shall I make a PR to switch any time measurement to use time.monotonic()? We should probably be using this anyway as even without docker the main clock on any host can go backwards (with NTP, chrony etc) anyway

Please do!

Done: https://github.com/locustio/locust/pull/1492


Whitelist/blacklist not working in webUI 1.1.1

webUI: 1.1.1 (5ab7f21)
Gradio: 3.28.1 (installed automatically)
a1111-sd-webui-tagcomplete: 4442cb7
Browser: Chrome 108
This is on a somewhat fresh installation (a couple days ago).
Neither whitelist nor blacklist won’t work. Autocompletion popup shows up with any model, completely ignoring all of the settings. I’ve tried inputting both name(s) and hash(es). Then I’ve noticed the following error in the JS console:

I’m guessing that querySelector doesn’t return what it’s supposed to return. And also the code branches to “Fallback for older versions” even though I have one of the recent ones.

Thanks for bringing this to my attention, it was due to Gradio once again changing how they create dropdowns.
Hopefully with this fix it should work both on the newest, the old pre-3.22 update some people hang on to, and the intermediary solution that was used the last few weeks before the recent update to Gradio 3.28.

Ah, the joyous world of open source development where everything is constantly changing for no good reason 😉

Well, it was definitely a good change, since in the intermediate version you couldn't filter the list by typing. And since it didn't use the native HTML select element anymore after 3.22, the browser wouldn't jump to that entry in the list when typing the starting letter either, which made finding a model in a long list very annoying. It just went unnoticed by me that the value of the dropdown was stored in a different place again due to this since I'm not using the blacklist myself most of the time.


Extract to external css file and extract critical css for SSR?

Is there a way to extract the css to css file to reduce run time and extract critical css for SSR?

This would be awesome
I've read the docs many times and I don't think that there is this feature atm but there is, please show me 😍

See: https://github.com/styletron/styletron/issues/268#issuecomment-417186969


[Question] cant it add the default hash?

Hi I used the component this way
Chat
scroll looks good but it doesnt add the default hash to my page, is it the expected behavior
would like to have www.mydomain/is/this#chat

It is indeed intended, since most of the time it's used for things like scroll to top. I could make it into an option if that would work for you.

well It worked the next way
`Chat```
focusChat() {
                this.$scrollTo('#chat')
            }

But you should consider the default behavior of href


Azure Login insufficient

I'm trying to deploy a previously build image, using a pre-defined Service Principal and the below job:
  deploy:
    runs-on: ubuntu-latest
    environment: Development
    needs: build-and-push
    steps:
      - name: Log in to Azure
        uses: azure/login@v1
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      - name: Build and deploy Container App
        uses: azure/container-apps-deploy-action@v0
        with:
          acrName: xxx
          ### Expected to be resolved by azure/login@v1, but reality says otherwise ###
          acrUsername: ${{ secrets.AZURE_CLIENT_ID }}
          acrPassword: ${{ secrets.AZURE_CLIENT_SECRET }}
          #####################################################
          containerAppName: yyy
          resourceGroup: zzz
          imageToDeploy: aaa.azurecr.io/bbb:${{ github.event.head_commit.id }}

When not supplying acrUsername and acrPassword, I get the following error:

WARNING: The installed extension 'containerapp' is in preview.
ERROR: Failed to retrieve credentials for container registry. Please provide the registry username and password
Error: Process completed with exit code 1.

Given the documentation and my previous experience, I would have expected the Log in to Azure step to have sufficed.
Any clarifications would be helpful, but since the workaround of providing acrUsername and acrPassword exists, it is not a pressing matter.
Thank you.

@jgarplind Hey Joel, apologies for the delayed response to this; to clarify the authentication pieces of this GitHub Action:

The azureCredentials argument (or the prior execution of the azure/login action) authenticates calls using the Azure CLI, specifically the call to az containerapp up, which manages the creation or patching of the Container App
The acrUsername and acrPassword arguments are used to authenticate calls to the given ACR instance (provided with acrName). These two arguments are used in a call to docker/login-action, which will authorize the runner to push/pull images to/from the ACR instance.

In the workflow snippet you've provided above, since you're not providing the appSourcePath argument (i.e., the source code for the application that you want to build) and are providing the imageToDeploy argument (i.e., a previously built and pushed image in the provided aaa.azurecr.io ACR instance), the credentials you're providing to acrUsername and acrPassword will be used to authenticate calls to the xxx ACR instance (since that is what you provided for the acrName argument, assuming it's different than the aaa ACR instance that is hosting the imageToDeploy).
The values that you should be providing to the acrUsername and acrPassword can be found in the Azure Portal when examining the ACR resource and selecting the Access keys blade under Settings. There will be a Username field for the acrUsername argument and a password (along with password2) field for the acrPassword argument.
The secrets.AZURE_CLIENT_ID and secrets.AZURE_CLIENT_SECRET values that the above workflow is currently providing for acrUsername and acrPassword would be used to authenticate the azure/login session as those relate to a service principal that was created by you with permissions over some scope within your subscription (either the subscription itself, a resource group, etc.). More information about configuring the credentials for the azure/login action can be found here if you're interested and aren't able to get it set up successfully.
Feel free to let me know if there's anything I didn't clarifying and/or if you're still having any issues!

Hi Cormac, thanks for the extensive answer!
As you mentioned its been a few weeks, so this is not top of mind right now, but I feel fairly confident in saying that xxx and aaa refer to the same ACR instance, apologies for the confusing masking.
Ignoring using explicit acrUsername and acrPassword for now (since that works just fine); the heart of the matter for me is whether the permissions of the service principal authenticated by the azure/login session (AcrPull specifically) are in any way useful in reaching the ACR instance specified for azure/container-apps-deploy-action@v0.
That was my understanding from the documentation, but my experience was that it did not. If you can confirm whether the intended behavior is that those permissions should apply or not, I'll happily confirm that in practice as soon as I have some bandwidth to do so.
Thanks again.

@jgarplind Thanks for following up, Joel -- one thing you can try is removing the acrUsername and acrPassword arguments and providing just acrName (in addition to your other arguments) as the action attempts to generate an access token using the ac acr login --expose-token command and provide that to docker login as a substitute to the username/password authentication.
Since this would be using the Azure CLI, the service principal you provided with the azureCredentials argument (or via a prior call to azure/login) will be used to generate that access token and would need the AcrPush role on your ACR instance in order to pull and push images.
If this is something that you're able to confirm whenever you're working with the action, feel free to let me know and I can adjust our documentation based on the results. Thanks!

@jgarplind I'm going to close this issue for now -- feel free to re-open this issue with additional context if any updates need to be made to the task in the future regarding this scenario. Thanks!


Make restic the default engine

Coverage remained the same at 16.892% when pulling da4f6baed6972ff6f561cf066759b52a44909178 on raphink:restic_default into 7213d3ee11569e80e367209103a6145b8f6066c2 on camptocamp:master.

Beware, I've had memory problems with Restic on alpine if the container was not regularly killed... Still best tool ever! :smile:

@mcanevet rebased


nydus-snapshotter own configuration file

Introduce nydus-snapshotter's own TOML based configuration file

Codecov Report
Base: 31.64% // Head: 31.74% // Increases project coverage by +0.09% :tada:

Coverage data is based on head (4c9b260) compared to base (29a9e90).
Patch coverage: 90.90% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #306      +/-   ##
==========================================
+ Coverage   31.64%   31.74%   +0.09%
==========================================
  Files          34       34
  Lines        3583     3588       +5
==========================================
+ Hits         1134     1139       +5
  Misses       2333     2333
  Partials      116      116

Impacted Files
Coverage Δ

pkg/daemon/rafs.go
2.32% <0.00%> (ø)

cmd/containerd-nydus-grpc/pkg/command/flags.go
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Generate CRUD from database option GUI ... Update builder.blade.php

Generate from Database Option GUI

Hi @Aramics nice work.
but there need to some refactor.

Select only one table at time from drop down instant of multiple tables and generate scaffold for single table.
Model Name option should be there and its required.
everyone not want same Model name as table name.
Remove commented code like var_dump

btw, You can Put all things in single PR with all changes like route, builder.blade & controller, no need to put separate PRs.

Thanks for being welcoming.
Why do you prefer single table scaffolding ? Is it because of the model name ?
if Yes , table UI could be with respective model name i.e select box with alternative text box infront for model name if table name is not desired.
if No, then please make clear why since you know every bit of the code .
Multiple table scaffolding could be every helpful.
Thanks.

@Aramics Its fine to generate scaffold with multiple tables at a time.
but , i see here generated model name smaller & plural case.
Modal name Must be Singular and Capitalised.
Can you please make this changes ?

@Aramics Its fine to generate scaffold with multiple tables at a time.
but , i see here generated model name smaller & plural case.
Modal name Must be Singular and Capitalised.
Can you please make this changes ?

i fixed that things in second PR : https://github.com/InfyOmLabs/generator-builder/pull/47/commits/10f2a97c7653ce4f63fca3fd433676c8dc9a00c3


Use the actual path to plugin zip in CI

Closes #1154

To be merged after the release of v3.0.2 (version.gradle.kts will also need to be updated)

this led to v3.0.2 release pointing to a weirdly named tag, instead of v3.0.2 tag

🤔 Can you explain this situation clearly? I checked the v3.0.2 release and it points to a tag, that has a standard, valid name: v3.0.2

One more place to use the new path: hub release create --attach (as now the * glob resolved to two files, one signed, the other unsigned; this led to v3.0.2 release pointing to a weirdly named tag, instead of v3.0.2 tag.

@PawelLipski - another thing I do not understand here. How would that be possible that the --attach part of this command should have an impact on the tag that release will point to? I just read the manual https://hub.github.com/hub-release.1.html for the command:
hub release create [-dpoc] [-a FILE] [-m MESSAGE|-F FILE] [-t TARGET] TAG
and it should choose (or create if not exists) the git tag that has a name equal to the TAG. The --attach (o -a - the same) part of the command should not matter at all for the git tag.

One more place to use the new path: hub release create --attach

@PawelLipski - and the last question from my side: which of the two .zip files do we want to attach to the releases? the "signed" one or the basic one (unsigned)? As I can see, for previous releases we attached the unsigned files. And for the 3.0.2 release - the signed .zip file has been attached. Which file should be attached for next releases?

can you explain this situation clearly? I checked the v3.0.2 release and it points to a tag, that has a standard, valid name: v3.0.2

Whoops sorry, 'twas a hectic release yesterday 😅
The second master build for v3.0.2 produced two files under build/distributions/, as can seen under its Artifacts:

The latter came from buildPlugin; the former is the signed plugin, which has only been published to artifacts since my hotfix-ish PR https://github.com/VirtusLab/git-machete-intellij-plugin/pull/1185.
I didn't, however, predict one thing: the command in .circleci/config.yml that opens the GitHub release is as follows:
                  hub release create \
                    --attach build/distributions/git-machete-intellij-plugin-*.zip \
                    --message "$tag"$'\n\n'"$change_notes" \
                    $tag

build/distributions/git-machete-intellij-plugin-*.zip glob expanded into two files, not just one; after all the expansions, the executed command looked like:
                  hub release create \
                    --attach build/distributions/git-machete-intellij-plugin-3.0.2-signed.zip build/distributions/git-machete-intellij-plugin-3.0.2.zip \
                    --message "v3.0.2<stuff...> \
                    v3.0.2

build/distributions/git-machete-intellij-plugin-3.0.2-signed.zip has been interpreted as argument to --attach, but build/distributions/git-machete-intellij-plugin-3.0.2.zip has been interpreted as argument to hub release create itself, i.e. the tag to associate with the release 😅
Later I've removed the build/distributions/git-machete-intellij-plugin-3.0.2.zip tag manually:
git push origin :build/distributions/git-machete-intellij-plugin-3.0.2.zip

This caused the release to fall back to draft state. Then I assigned tag v3.0.2 to that release, fixing the entire mess.

another thing I do not understand here. How would that be possible that the --attach part of this command should have an impact on the tag that release will point to?

Explained above; this was a side effect of shell globbing ☹

and the last question from my side: which of the two .zip files do we want to attach to the releases? the "signed" one or the basic one (unsigned)? As I can see, for previous releases we attached the unsigned files. And for the 3.0.2 release - the signed .zip file has been attached. Which file should be attached for next releases? (the new path would point to the unsigned file)

Let's stick to the output of buildPlugin for all purposes (UI tests, GH release etc.) for this PR. I've opened a follow-up task to switch to the signed plugins: #1187

One more place to use the new path: hub release create --attach (as now the * glob resolved to two files, one signed, the other unsigned; this led to v3.0.2 release pointing to a weirdly named tag, instead of v3.0.2 tag.

Done! :)


I am Invincible!!

Hey Chris,
I'll let the images talk...
( Attaching a save file: axe.data.txt )

Yup, at the moment you can keep playing after your health drops to zero.
The log message 'You are dead' is the only indication that the game has noticed. I need to add a 'Win' and a 'Lose' screen at some point, but for now enjoy the invincibility!
I'll leave this issue open as a reminder to add the game over game state, I think that my to-do list currently involves.

Adding armour items
Adding 'game over' game state
Adding scent maps for certain enemies to track you
All item drops come from defeated enemies
Adding multiple levels to the first cave
After so many turns on a level, all defeated enemies will resurrect but provide zero Experience Points to force you to keep moving
Add overworld map that allows you to visit caves and dungeons with different themes / difficulty levels
Add Literacy skill that allows you to learn by reading / deciphering scrolls
Add ranged combat

That should be enough for now

Hey Chris,
WOW, that's a hell of a small list :)
Thanks for all you've done so far and I'm looking forward to test all individual bullet point on that list!!
Cheers,
Gus

Hey @cyberfilth ,
I think this issue needs to be revisited. From my last play, and it was a tad ago, I died twice while testing, so invincibility is now off the table, hum?
Cheers,
Gus

Yep, the player can now die in a couple of different ways with the killer/method of death displayed on the 'game over' screen.


Your github release page has a link to download the msi but it has not been uploaded to the storage container

https://ptvs.blob.core.windows.net/download/PTVS Dev 2016-02-01 VS 2015.msi
<Error>
BlobNotFound
<Message>
The specified blob does not exist. RequestId:a479fe9c-0001-0027-6ccf-5e862d000000 Time:2016-02-03T22:10:00.2693765Z
</Message>
</Error>

The latest release: https://github.com/Microsoft/PTVS/releases/tag/dev-2016-02-01

Thanks. Fixed now - the upload app I used (not written in Python :( ) swallowed an error and didn't report it.

You can use the Azure Storage Explorer for uploading the MSI. We use the same for azure-xplat-cli :)

That's the one that swallowed the error...

Arghh... This was good to know. I think we should actually click on the test link in the App to make sure the download works.


What changed in 1.7.0?

The changelog here https://parse.com/docs/downloads does not give details for 1.7.0.

@andymads Thanks for the report, it will be fixed by end of day.
For future reference, the source of truth for all of our releases is now here on GitHub, which will always contain the updated release notes.


Update Breadcrumbs.php to fix traversable error

This fixes an error in while trying to visit a dashboard (or lens) that you don't have access to. The functions should return an array to allow array_merge to work correctly.

Thanks for this, ill write a test case and get it merged tomorrow or tuesday

Thanks for this, ill write a test case and get it merged tomorrow or tuesday

hey hey, any update on this by any chance? :)

I've rolled in Nova 5.0 support into this branch too


Open the app from the android notification

Hello, first of all congrats, it is a great plugin. I'm trying the example, it is perfectly running, and also I'm developing my own application, but when is in background and the user tap the notification it opens the app details and the example opens the app. ¿Some one know if it is a configuration? I was serching in the code, but I couldnt found it.

Notice: this issue has been closed because it has been reported for branch 2.x or later. It could be already fixed in v3 or is not relevant anymore. You may reopen this issue if it has been closed in error.


Card hovering effect

To create an issue, edit this template to fill your details as well as describe your issue and then post it.
add 'x' to the relevant to define you

[ x] Hacktoberfest Participant
[ x] Contributor

A card hovering effect that a card laying flat (not completely flat) will start erect when hovered on
@Anjuli08 assign this to me

@Anjuli08 kindly assign this issue to me

pls go ahead


Diagnostic Improvements

When a source location is references a token that is not directly part of a input source file, Slang may not give very helpful diagnostics as to the origin of the error.  A somewhat contrived example is in token-paste.slang
#define SOME %
#define THING %

#define A SOME
#define B THING

#define PASTE2(x, y) x##y
#define PASTE(x, y) PASTE2(x, y)

PASTE(A, B)

Slang outputs
token paste(1): error 20001: unexpected '%', expected identifier
tests/diagnostics/token-paste-location.slang(10): note: see token pasted location

That line 10 is the line with the ## macro paste.
Clang produces the following ...
<source>:11:1: error: pasting formed '%%', an invalid preprocessing token
PASTE(A, B)
^
<source>:8:21: note: expanded from macro 'PASTE'
#define PASTE(x, y) PASTE2(x, y)
                    ^
<source>:7:23: note: expanded from macro 'PASTE2'
#define PASTE2(x, y) x##y
                      ^
<source>:11:1: error: expected unqualified-id
<source>:8:21: note: expanded from macro 'PASTE'
#define PASTE(x, y) PASTE2(x, y)
                    ^
<source>:7:22: note: expanded from macro 'PASTE2'
#define PASTE2(x, y) x##y
                     ^
<source>:1:14: note: expanded from macro 'x'
#define SOME %

Gcc displays
<source>:1:14: error: pasting "%" and "%" does not give a valid preprocessing token
    1 | #define SOME %
      |              ^
<source>:7:22: note: in definition of macro 'PASTE2'
    7 | #define PASTE2(x, y) x##y
      |                      ^
<source>:11:1: note: in expansion of macro 'PASTE'
   11 | PASTE(A, B)
      | ^~~~~
<source>:4:11: note: in expansion of macro 'SOME'
    4 | #define A SOME
      |           ^~~~
<source>:11:7: note: in expansion of macro 'A'
   11 | PASTE(A, B)
      |       ^
<source>:1:14: error: expected unqualified-id before '%' token
    1 | #define SOME %
      |              ^
<source>:7:22: note: in definition of macro 'PASTE2'
    7 | #define PASTE2(x, y) x##y
      |                      ^
<source>:11:1: note: in expansion of macro 'PASTE'
   11 | PASTE(A, B)
      | ^~~~~
<source>:4:11: note: in expansion of macro 'SOME'
    4 | #define A SOME
      |           ^~~~
<source>:11:7: note: in expansion of macro 'A'
   11 | PASTE(A, B)
      |       ^

These errors are better at explaining what the error is, as well as how it happened through various macro applications.
There's a few things that we could improve in Slang

As well as listing the line number, we could list the contents of the line.
** Additionally underneath the line, we could display a caret (^) showing where in the line the location is
The macro paste must produce a valid token which %% isn't - Clang states this, Slang says 'unexpected %, expected identifier' - which doesn't seem quite right even
After the error Clang lists the macro expansions that led to the problem - Slang can only go as far as noting where the ## occurred in the source, which may not be very relevant to the specific problem.

So to number the suggested improvements

List the source line underneath the location, along with a caret. It might be nice to have an option to limit the line length, so if the line is too long it only displays the part around where the error occurred. If we had this feature, the max length should be configurable, and switch off-able.
Improvements around reporting of problems with a macro paste - might be as simple as better identifying the issue here
Tracking and display of macro expansion

The first two points are relatively simple to implement. The 3rd point probably deserves some discussion.
The most obvious first stab at implementing the macro expansion feature would be for each macro expansion, to write the tokens from the macro into a SourceFile, and then create a SourceView that uses it. Then use the SourceLocs for the start of each token to identify each token in the output. That stored in the SourceFile there could be a reference to macro that was expanded. Moreover this could also contain information about what tokens are from the macro, and what are from which parameter. There might also require some mechanism to indicate what tokens are due to a paste, and if so of what.
This might be a reasonable first stab at this feature, but a few observations

Every macro expansion will require multiple objects and allocations

At a minimum a SourceView, SourceFile, the buffer holding all the tokens, and other buffers to describe the token origin, source locations

Every parameter token, will need to hold the SourceLoc of it's origin
The SourceManager system arguably assumes some kind of immutability of the source

On point 3 SourceLocs are currently 32 bits. That every expansion will consume a new range of SourceLocs.
For a compilation when using a source file for a request, we could check to see if the timestamp had changed and reload it (and use new SourceLocs). Currently we don't do this - but it might be better overall behavior.
That a SourceManager is associated with a Linkage. That a Linkage may be involved with multiple compilations. That even though the Source may be static - the macro expansions cannot be assumed to be, and so each CompileRequest will expand macros and consume SourceLocs.
What to do?
Transitory Macro Expansion Source Manager
When doing a request, we could create a SourceManager that parented the manger that held source. The idea being that after the compilation we throw away this 'macro expansion' SourceManager. This doesn't quite work though, because if new Source is loaded, it can only be loaded into the 'macro expansion' SourceManager to avoid a clash of SourceLoc runs, and so would repeatedly reload 'static' source.
This could be worked around by having the macro expansion SourceManager take a range that we define cannot be used by it's parent 'source' manager. We could do this by say making 31 bits available of SourceLoc for Source and macro expansion, and use the top bit to determine which is which.
64 bit source Locs
Another tack would be to use 64 bit SourceLoc and perhaps 'not worry' - as such a clash then becomes very unlikely in most typical usage scenarios. Also whilst it is attractive from a simplicity point of view, all of the 'unused' macro expansions in effect become garbage. That garbage not only consumes memory, but increasing compute in terms of remapping back to Source. This is leaving aside the extra memory consumption of doubling the SourceLoc size.
For both these reasons it seems worth the extra effort to avoid this expansion.
SourceFile/View for a macro expansion?
Not only does this require 2 objects when ideally one would suffice, neither of them are really set up to hold the information desired - the macro used, how each token is produced, the SourceLocs of their source etc.
Therefore it may make sense to have a base class that say 'SourceView' and 'MacroExpansionView' (or whatever) derive from.
Serialization
There are already limitation around how SourceLocs are handled with serialization. That during serialization the easiest thing to do would be to replace any 'transitory' SourceLocs (ie from macro pasting) with the nearest source file SourceLoc. If we use bit 31 to identify 'transitory' or actual source, we have a fast way to determine these locations.
Other Details
We might not have to use up a SourceLoc range that is the size of all the text of the tokens concatenated, perhaps we use a SourceLoc range which uses one value for each Token. Doing so provides a more simple mapping from the SourceLoc to say the information about the token (it's then just a simple index).

We're doing a bug bankrupcy --- please file a new bug or reopen if you see a specific thing we should do.


v4.03 (standard build) : is there a file which provide list of all available options ?

In the old doc I see this, but I can not find out where is this file in the build.  Where is this file please ?
language: {
  // You can find all of the options in the language files provided in the
  // build. They all must be functions that return the string that should be
  // displayed.
  inputTooShort: function () {
    return "You must enter more characters...";
  }
}

Duplicate of https://github.com/select2/select2/issues/4687.


Nothing is being Blocked

Hello i have tried everything even reinstalling but nothing is being blocked and when i free i get error to flush network and i have to reboot to get menu back to try again

Does this issue persist if you specify the --flush flag?
evillimiter --flush
If that is the case, could you send me the output of this command:
tc qdisc add dev [YOUR INTERFACE NAME] root handle 1:0 htb
... replace [YOUR INTERFACE] name with the actual interface name ;).

it would be quiet useful if you give more detail on which Os usage, tried methods etc... It works well on a linux host machine

it would be quiet useful if you give more detail on which Os usage, tried methods etc... It works well on a linux host machine

Sorry i got called into work Os was Kali Linux i will redownload and run
again tonight if i get home not so late tonight
On Wed, May 29, 2019, 11:24 AM ihateadmins<EMAIL_ADDRESS>wrote:

it would be quiet useful if you give more detail on which Os usage, tried
methods etc... It works well on a linux host machine
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/bitbrute/evillimiter/issues/6?email_source=notifications&email_token=AHNFNY377W22ZCCHRV6SLBDPX2NZRA5CNFSM4HPYXTRKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWPWEJA#issuecomment-496984612,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHNFNY6FEKIF77AHOGY3ZULPX2NZRANCNFSM4HPYXTRA
.

i'm using Kali, last distrib, I installed with git clone, i've no error message when i'm trying to block, but it doesn't work... :'(

It works well with the latest Kali distr. Guys simply telling the Os won't get you anywhere. You have to provide more information(for example device name) and maybe logs

It works well with the latest Kali distr. Guys simply telling the Os won't get you anywhere. You have to provide more information(for example device name, network) and maybe logs like a cap/pcap with wireshark

@bitbrute I've noticed that both blocking and limiting work when the device attemps to connect to an address on the LAN (e.g. to the gateway), but not when the device attempts to connect to the internet (connecting to, for example, github.com works fine). The issue does persist with the --flush flag. Running sudo tc qdisc add dev wlp0s20f0u7 root handle 1:0 htb produced no output the first time, and Error: Exclusivity flag on, cannot modify. subsequent times.

I'm not sure if I understood you correctly. You said blocking and limiting does not work when the device attempts to connect to the internet, yet you wrote that it works fine for e.g. github.com.
Make sure that the connection is truly IPv4. If you have IPv6 enabled in your router settings, some websites that support IPv6 will not be affected by EvilLimiter.

Connecting to github.com works fine, as in, it is not blocked by evillimiter. IPv6 may be the culprit, however.

Oh, I see ;).
You could try to capture some packets and see whether or not the connection is IPv4 or IPv6.

Yeah, looks like it's indeed IPv6. Connecting to ipv6.icanhazip.com is always successful on a blocked device, while ipv4.icanhazip.com is blocked by evillimiter.

It's doesn't work the block option. I did block my phone and still get internet connection. Why is that?


[Feature] Get all changes on current branch against a base_sha

Is this feature missing in the latest version?

[X] I'm using the latest release

Is your feature request related to a problem? Please describe.
Currently I am trying to get all the modified files from a PR when I push a single commit (with potentially multiple commits pushed earlier), and would like to see all modified files (including all modified files from previously pushed commits) against a different base_sha other than the last commit from the same remote branch.
This should be similar to since_last_remote_commit but with the ability to input a base_sha.
Use case for this will be something like branching out from a base branch and trying to check all modified files from the current branch to the base branch (with multiple commits pushed to a PR)
Describe the solution you'd like?
The ability to list all changed files in all commits in current branch that triggers the actions against another branch (base_sha)
Describe alternatives you've considered?
No response
Anything else?
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

By default using

on:
  pull_request:
    branches:
      - '**'

jobs:
  build:
    runs-on: ubuntu-latest
    name: Test changed-files
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Get changed files
        id: changed-files
        uses<EMAIL_ADDRESS>
      - name: List all changed files
        run: |
          for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
            echo "$file was changed"
          done

By default, the diff is based on the last commit SHA on the Target branch of the pull request and the current pushed commit SHA of the current branch
Can you elaborate on the difference in your use case?

@boranliu By default using
on:
  pull_request:
    branches:
      - '**'

jobs:
  build:
    runs-on: ubuntu-latest
    name: Test changed-files
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Get changed files
        id: changed-files
        uses<EMAIL_ADDRESS>
      - name: List all changed files
        run: |
          for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
            echo "$file was changed"
          done

The diff is based on the last commit SHA on the Target branch of the pull request and the current pushed commit SHA of the current branch
Can you elaborate on the difference in your use case?

Thanks for the quick response.
My use case is for on push event and one example can be illustrated as below:

Create a branch B which is branched off branch A
PR on branch B
Push several commits (in individual commands, so multiple pushes) to branch B
Lets assume the last commit on branch A has sha 123

So I would like to get all changes files on the current branch B against branch A (essentially sha 123) for every new push (which means that not only from the current commit that I pushed, but all the commits pushed earlier). Right now the behavior I spotted is that diff is only calculated between each new commit I pushed on branch B and the commit with sha 123 (from branch A).
One example could be:
On branch B:

Push a commit with file1.txt changed
Push another commit with file2.txt changed

Now the expected behavior I am trying to achieve is that for the second commit, all_modified_files should return both file1.txt and file2.txt

@boranliu In that case I'll suggest using
      - name: Get changed files
        id: changed-files
        uses<EMAIL_ADDRESS>        with:
          base_sha: ${{ github.event.pull_request.base.sha }}


Pytest broken

Pytest breaks because it is referencing name

Fixed.
ecba3f83013b1eeb208072a24e86b7b2f59e8645
Solution was to modify the factory producing data to remove references to name and admin page searching.


[Beta] Coding Interview Algorithm Questions section - Something went wrong

Challenge Name

https://beta.freecodecamp.org/en/challenges/coding-interview-algorithm-questions/inventory-update
Issue Description

Loading any challenge from the Coding Interview Algorithm Questions section gives Something went wrong message and checking the browser console shows:
Failed to load resource: the server responded with a status of 500 ()
Error: {"output":{"message":"Cannot read property 'isComingSoon' of undefined"},"meta":{}}
    at Object.callback (http.client.js:199)
    at n (index.js:62)
    at XMLHttpRequest.i (index.js:129)
    at XMLHttpRequest.o [as __zone_symbol___onload] (zone.js:1064)
    at e.invokeTask (zone.js:424)
    at t.runTask (zone.js:191)
    at XMLHttpRequest.invoke (zone.js:486)

Browser Information

Browser Name, Version: Google Chrome 64.0.3282.186 (Official Build) (32-bit)
Operating System: windows 7 32-bit
Mobile, Desktop, or Tablet: Desktop

Your Code

confirmed. the lesson does not load but produces the error(s) mentioned above.
Lesson Screenshot:

Dev Console:

I was playing around with this and found a temporary workaround.
For some reason, the error has something to do with the title of the Symmetric Difference challenge. When I change the title to something like Test it loads without issue. Perhaps for the time being we could simply add a space to the end of the challenge title so it reads "Symmetric Difference ".

I believe I found the issue while digging around in mongo.
It turns out that both the Coding Interview Algorithm and Rosetta Code Problem sections have problems named Symmetric Difference. It seems like the titles are different in terms of capitalization, but have the same dashed name, causing the error.
What do you all think? Should we rename the challenge in the Coding Interview Algorithm section? Or go with the workaround by adding a space?

Are they the same challenge? Could we just remove one?

They're not the exact same challenge, but are pretty similar. The one in this Coding Interview section uses arrays of numbers to test, and the Rosetta Code one uses arrays of name strings. Removing one could work, though I'd be hesitant to remove this one because it seems to have been around for such a long time. I guess renaming the problem here could also be troublesome for the same reason.

Okay, so this highlights a larger problem that we should strengthen the tests to check for uniqueness of the challenge title.
The URL slug was made to have /challenges for better SEO I guess @QuincyLarson
In this case the simplest solution is to add tests in the seed to check for title's uniqueness.

Hi @scissorsneedfoodtoo I think we should expand the tests here https://github.com/freeCodeCamp/freeCodeCamp/blob/staging/seed/test-challenges.js and also rename one of the challenges to preserve uniqueness.

@Bouncey and @raisedadead, thank you for your help! I'll start working on expanding the tests and will submit a PR to rename the challenge in the coding interview section.

/compare


ScreenGridLayer: Replace UBO usage with Texture2D

In ScreenGridLayer, max aggregated data (vec4) is provided to the shader as following :

WebGL1 (CPUAggregation):  GridAggregator provides data as Array of 4 floats, which is used as vec4 uniform
WebGL2 (GPUAggregation): GridAggregator provides data as Buffer object which is used as Uniform Buffer Object to provide data as uniform to the shader.

And given UBO is not supported by WebGL1 (Safari), we had to create two set of shaders in the layer.
Instead of this setup, we can do similar to what we did in HeatmapLayer, where max weight is provided to shader as a 1X1 RGBA_FLOAT_32 texture, which is sampled in vertex shader. This requires, support for float textures and Safari supports it.
NOTES:

This requires OES_texture_float extension support when using WebGL1, which has 84% support (99%  desktop browsers)
As per MDN this is not supported in Safari, but I verified and tested in Safari, it is supported.

Not against this, just a couple of thoughts:

There could be a big performance difference between uniforms and texture accesses?
In general it feels like we should be moving toward UBOs rather than away from them...
Is it the right direction? Unless this is an overall improvement to our GPGPU approach, should we do it? How important is GPU accelerated GridLayer on Safari?

Responded to above comments in the PR.


ClinGen ingest duplicating messages because it does not detect replicated messages.

Messages are in JSON which lacks a set construct,
so unordered collections of unique elements are coded as JSON arrays.
https://docs.google.com/document/d/1Cq7jpZbo6zb6BanICFqHiOzgit6H77toEow5GNbbzqs/edit?usp=sharing

This is in the wrong repo. I give up.


a possibly big modification around rkIK

As you know, in the current implementation, rkIK is an outerclass of rkChain, and a target instance of rkChain has to be attached to rkIK by rkIKCreate.
Now, I'm thinking of including rkIK as a member of rkChain so that programmers can solve the IK much more easily, for example, by calling rkChainIK() without any care about how it is internally solved. It is also nicer for dealing with parallel kinematic chains, where structural constrains should be automatically embedded in models.
It needs a big modification. Any opinions? @n-wakisaka @categoryik @kdaic @takanobuyamamoto

Does it mean that each rkIK functions will have the in-out argument of a rkChain pointer whenever called?
I think it is nice for user to be able to give any rkChain pointer in anytime to rkIK functions.

My idea is to redefine rkChain as
typedef struct{
  ...
  rkIK *_ik;
} rkChain;

and the API for the IK solver as
rkChainIK( chain, q, tol, iter );

instead of
rkIKSolve( ik, q, tol, iter );

by which I expect programmers may forget about rkIK.

BTW what is rkABI? @categoryik

I was wrong. I mean rkABIPrp. When I wrote above,  I mistakenly thought rkABIPrp is directly in rkChain.

The specification of inverse kinematics has been modified. A standard process of the inverse kinematics is as follows:
rkChainCreateIK( &chain );
rkChainRegIKJointAll( &chain, 1, 0.001 );
rkChainRegIKCell( &chain, ... );
...
  rkChainDeactivateIK( &chain );
  rkChainBindIK( &chain );
  rkIKCellSetRef( &cell, ... );
  rkChainIK( &chain );

No longer need to access an instance of rkIK directly.
The internal instance of rkIK is automatically destroyed in rkChainDestroy().

Note that RoKi-GL was also modified because rk_pen uses the inverse kinematics solver. Update them together.


Fix OMake source URL

Current source is 404, moving to pkgs.fedoraproject.org mirror.
Should fix current aborted jobs on Hydra: http://hydra.nixos.org/eval/1237311#tabs-aborted

Thanks.


Connect to server

Hello, Sir. I created a server based on this - https://github.com/DaniloPalmeira/protanki-server. How do I connect to it now using your client?

How do I connect to it now using your client?

This is not a visual client. It's a protocol wrapper for the pro tanki protocol.
A simple example on how to connect to a server can be found here: https://github.com/WolverinDEV/protanki-protocol-rs/blob/master/client-utils/examples/basic-connection.rs
A way more complex application could be found here (note: it's hacked together and made for the sole purpose of farming crystals instead of clean and good code!):
https://github.com/WolverinDEV/protanki-protocol-rs/blob/master/applications/crystal-bot/src/main.rs


Chrome 45 on a surface... the code lines dont all show up

Now when I click in the code area.. now all of the lines of the example show up. Why does it do this? Seems like a bug. Thanks

It's a known issue (#3294), fix should be implemented soon!

@codeguy2015 thanks for posting this! We are aware of this issue and this is a duplicate so I'll close it, thanks.


TypeError: Can't differentiate w.r.t. type <class 'int'>

I have the same problem described at the bottom with autograd 1.2:
from autograd import grad

print(grad(lambda x: x*x)(2.0))  # This works, output: 4.0
print(grad(lambda x: x*x)(2))  # This doesn't work

 $ python problem.py
4.0
Traceback (most recent call last):
  File "C:\dev\bin\Anaconda3\envs\py3\lib\site-packages\autograd\tracer.py", line 139, in new_box
    return box_type_mappings[type(value)](value, trace, node)
KeyError: <class 'int'>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "problem.py", line 4, in <module>
    print(grad(lambda x: x*x)(2))  # This doesn't work
  File "C:\dev\bin\Anaconda3\envs\py3\lib\site-packages\autograd\wrap_util.py", line 20, in nary_f
    return unary_operator(unary_f, x, *nary_op_args, **nary_op_kwargs)
  File "C:\dev\bin\Anaconda3\envs\py3\lib\site-packages\autograd\differential_operators.py", line 24, in grad
    vjp, ans = _make_vjp(fun, x)
  File "C:\dev\bin\Anaconda3\envs\py3\lib\site-packages\autograd\core.py", line 10, in make_vjp
    end_value, end_node =  trace(start_node, fun, x)
  File "C:\dev\bin\Anaconda3\envs\py3\lib\site-packages\autograd\tracer.py", line 9, in trace
    start_box = new_box(x, t, start_node)
  File "C:\dev\bin\Anaconda3\envs\py3\lib\site-packages\autograd\tracer.py", line 141, in new_box
    raise TypeError("Can't differentiate w.r.t. type {}".format(type(value)))
TypeError: Can't differentiate w.r.t. type <class 'int'>

$ conda list autograd
# packages in environment at C:\dev\bin\Anaconda3\envs\py3:
#
# Name                    Version                   Build  Channel
autograd                  1.2                        py_1    conda-forge

I think @dougalm fixed this in 1d5375d. The above example seems to work!
In [2]: grad(lambda x:x*x)(2)
autograd/core.py:209: UserWarning: Casting int to float to handle differentiation.
  warnings.warn("Casting int to float to handle differentiation.")
Out[2]: 4.0

Originally posted by @mattjj in https://github.com/HIPS/autograd/issues/3#issuecomment-96295679

Autograd 1.7.0 - does not work again with the same error:
TypeError: Can't differentiate w.r.t. type <class 'int'>
Is there is some workaroung?


fuzz: introduce initial fuzz targets

These take raw bytes, and convert to Proto types then internal types.
For https://github.com/istio/ztunnel/issues/183

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

test_ztunnel
fee461f94962ad1dbb95611a9417b289e4d3d02c
link
true
/test test

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


Handle close stream event

Hello,
When the stream created by this lib is closed, nothing happen.
I implemented the _destroy interface with a message null sent through the post message api that make the distant stream to be closed (this.push(null) close the stream)
I also use standardjs on the file as the style was very close to it. I understand if you don't want it.
I also bump the version (it still needs to be 'npm publish'ed)

in general when working with post message you need to code very defensively against message noise from other sources
while the feature seems useful, it would be better to make the closing signature more explicit


Rename com.google.gcloud to com.google.cloud

Related to #877.  Does not close the issue because the READMEs are left unchanged by this PR.  I will update the READMEs to use com.google.cloud once we release an artifact, otherwise users may get confused.

I see that in READMEs we still have links to old javadoc and files (try searching com/google/gcloud in the files). Is this intended? I believe these links should be updated.
Also as soon as we merge this we should release new artifacts so that README links to javadoc are not broken.

Fixed README links.  And yup, as soon as this gets merged, I plan on releasing artifacts.

Coverage decreased (-0.01%) to 85.571% when pulling 5404b3c0d6593849a683a816a70efb70b7ba8d3c on ajkannan:rename-package-cloud into 099ada0000cb7731d1b99f0ff1744420e18df9bb on GoogleCloudPlatform:master.

README links seem to be fixed now. Since we merged #858 we should update the URL we use to check whether the artifact is already deployed or not.

Also is there something we can do to make it more clear that we renamed our group and package to users that already have gcloud-java as a dependency?
I am thinking about adding some temporary text on top of http://googlecloudplatform.github.io/gcloud-java/ and our main README.md. /cc @jgeewax @aozarov

Good catch on the URL update.  I rebased, fixed that link, and grepped for "com.google.gcloud" and "com/google/gcloud" and found no results.
I think it's a good idea to add some temporary text on the website and our README, they're both pretty common entrypoints to our repo according to our traffic stats.  I'll also add a note at the top of our release notes.

Coverage remained the same at 85.571% when pulling 37567fbb688d2efcec36480cc6fa76bd38ae0cad on ajkannan:rename-package-cloud into 67609eef22aa04194cf2c40bd197522a0cfd60bb on GoogleCloudPlatform:master.

This looks good to me. I couldn't find any more stale naming. Text on top of site and README could be added in the release commit, right? Do you think it's worth adding it on top of each README?
I was thinking about something like:

"As of April 12th, 2015, gcloud-java's group ID and base package were renamed to com.google.cloud. If you haven't already please update your dependency."

To be placed just before where we show our dependency code. Could this work?

That text sounds good to me.  I'll add that in the release commit.

Just a note: after we release with this packaging change, we'll have to update the external applications (in java-docs-samples and getting-started-java) and also the links in cloud.google.com to particular gcloud-java classes.

Looks good. I think we only need to note in the release-notes, main readme page and maybe in the site page. FYI, I did a test and deployed it to snapshots.

Feel free to merge when you are ready.


Support for Selenium 3.141

This was a significant effort (not unlike @renklapper's from March 2019). Please feel free to discuss. I'd really like to get this repo updated so the NuGet package can be updated.

I don't know why the AppVeyor build fails. It may have something to do with the fact that it uses MS Build 12? Maybe because it doesn't restore NuGet packages?


display filter via env variable

use case: defmt supports emission filters on the target side (via Cargo features like defmt-info) but these have crate granularity. To filter that further at module level granularity we can use an env variable like env_logger's RUST_LOG.
user interface: We can reuse RUST_LOG's syntax: krate::module=level,krate2::module2=level2 for familiarity.
implementation: log messages include the module in their call site info. probe-run can read the env var, parse it, filter out incoming log messages and print to the console only those that pass the filter.
unresolved questions:

env var name? DEFMT_DISPLAY_FILTER? PROBE_RUN_FILTER?

$ DEFMT_DISPLAY_FILTER=krate::module=info cargo run --bin my-app
0.000000 INFO  message1
└─ krate::module::function1 @ src/module/foo.rs:8
0.000001 INFO  message2
└─ krate::module::function2 @ src/module/bar.rs:9
(..)

env var name? DEFMT_DISPLAY_FILTER? PROBE_RUN_FILTER?

What about just DEFMT_FILTER? I don't see any other filters for defmt or probe-run. Then we would have DEFMT_LOG for the target-side log-level and DEFMT_FILTER for the host-side log-level.

We can reuse RUST_LOG's syntax: krate::module=level,krate2::module2=level2 for familiarity.

env_logger also supports regex filters. That's something we could implement in this feature, on the host (instead of on the target, see knurling-rs/defmt#519)

@japaric Since DEFMT_LOG is able of module level filtering, do you think we actually still want this feature? I am unsure.


The system could not find the path specified

Hello. I followed all the steps but I'm getting this error:
O sistema não pode encontrar o caminho especificado.

Which translating from portuguese is:
The system could not find the path specified.

According to the documentation, this system doesn't works on Python 3.11+, so I prompted on my last Python version (3.10.11). The steps I executed is below:

Hi Lucas. That's quite an old version. Can you please try:
https://github.com/avalon60/ctk_theme_builder/releases/download/v2.3.0/ctk_theme_builder-2.3.0.zip

Worked to me, thank you!


Added shortcodes for maistraBranch and maistraVersion

Yep. This PR is against the Maistra-1.2 branch. When I cherry-pick to Maistra 1.1, it will pick up the data from release.yaml there and render as Maistra-1.1


Dialog: Allow bypassing focus lock for some elements

Feature request
I am trying to use the Dialog component, however I noticed a bug where I am loading Google Maps Place Autocomplete service, and I'm unable to select places because they are rendered in a portal outside the dialog.
This issue also appears to exist if you use a third party <select> library instead of Radix.  The reason this is the case for me is because I was attempting to migrate from Reach UI incrementally (modals first, then dropdowns, etc).
Overview
To solve this, I think the dialog component should select a shards or whitelist prop much like React Focus Lock  to allow including external elements in the focus lock logic.
Examples in other libraries
https://www.npmjs.com/package/react-focus-lock
Who does this impact? Who is this for?
Probably more advanced use cases, or anyone dealing with third party libraries or dependencies.
Additional context
None

Hey @brandon-pereira,
Are you able to provide a sandbox demonstrating your issue so we can use this as a baseline?

@nimeshvaghasiya thanks for setting up the code sandbox, I didn't have the time to set one up.
The reason it closes is because they are adding a focus guard to the dialog, but don't expose the controls to add external elements to ignore.

Same problem here too, modal=false removes backdrop but would be nice to still have backdrop.
My issue is that i can't use https://github.com/flatpickr/flatpickr inside dialog.

What do you think is the best possible solution right now to get it working?
We can probably add a custom backdrop ourselves.

My solution was to use a different modal library for now :D

The onInteractOutside prop can be used to check which elements are allowed and use event.preventDefault() to not close

The onInteractOutside prop can be used to check which elements are allowed and use event.preventDefault() to not close

Doesn't work in my case. I think my usecase is different.
I am using the google places API autocomplete inside the dialog. That gets displayed on top but seems like it's focus-locked somehow so I can't click and select any place.
I can still use the keyboard but clicking is still necessary. How can we make it work with that?
Right now I set modal to false and it works well but without a backdrop

I found a temporary solution that track whether the user is typing or not by using onFocus and onBlur to prevent closing of the modal.
const Modal: React.FC<Props> = ({
    isOpen,
    onClose,
    title,
    description,
    children,
    disable,
    modal = true,
}) => {
    const handleClose = () => {
        if (!disable) {
            onClose();
        }
    };

    return (
        <>
            {isOpen && !modal && (

            )}
            <Dialog open={isOpen} onOpenChange={handleClose} modal={modal}>
                <DialogContent>
                    <DialogHeader>
                        <DialogTitle>{title}</DialogTitle>
                        <DialogDescription>{description}</DialogDescription>
                    </DialogHeader>

{children}

                </DialogContent>
            </Dialog>
        </>
    );
};

For anyone who's using react-google-autocomplete + radix dialog here was my solution:
Add this to the Content component:
onInteractOutside={(e) => {
  const classes: Array<Array<string>> = [];

  e.composedPath().forEach((el: any) => {
      if (el.classList) {
          classes.push(Array.from(el.classList));
      }
  });
  // pac = classes naming for https://www.npmjs.com/package/react-google-autocomplete
  // primary use case is the "AddContact" modal
  if (classes.join("-").includes("pac-container")) {
      e.preventDefault();
  }
}}

And anywhere you're rending the autocomplete input, just add this:
useEffect(() => {
        // Disable Radix ui dialog pointer events lockout
        setTimeout(() => (document.body.style.pointerEvents = ""), 0)
})
    ```

Had a similar problem with a flatpicker calendar, I had to add a pointers events auto class to the calendar, and this
onInteractOutside={(e) => {
              if (e.target !== overlayRef.current) {
                // avoid closing while interacting with timepicker calendar
                e.preventDefault();
              }
            }}

onInteractOutside={(e) => {               if (e.target !== overlayRef.current) {                 // avoid closing while interacting with timepicker calendar                 e.preventDefault();               }             }}

For anyone who's using react-google-autocomplete + radix dialog here was my solution:
Add this to the Content component:
onInteractOutside={(e) => {
  const classes: Array<Array<string>> = [];

  e.composedPath().forEach((el: any) => {
      if (el.classList) {
          classes.push(Array.from(el.classList));
      }
  });
  // pac = classes naming for https://www.npmjs.com/package/react-google-autocomplete
  // primary use case is the "AddContact" modal
  if (classes.join("-").includes("pac-container")) {
      e.preventDefault();
  }
}}

And anywhere you're rending the autocomplete input, just add this:
useEffect(() => {
        // Disable Radix ui dialog pointer events lockout
        setTimeout(() => (document.body.style.pointerEvents = ""), 0)
})

@BenLebich's solution also works great if your using the Google's SDK directly.
I made some minor modifications - but the results are the same.
onInteractOutside={(e) => {
  const hasPacContainer = e.composedPath().some((el: EventTarget) => {
    if ("classList" in el) {
      return Array.from((el as Element).classList).includes("pac-container")
    }
    return false
  })

  if (hasPacContainer) {
    e.preventDefault()
  }
}}

I have been racking my brain all day over this issue till I stumbled on this solution, works like a charm. Nice work, guys.

I had the same problem here is how i fixed it
useEffect(() => {
  // Disable Radix ui dialog pointer events lockout
  setTimeout(() => (document.body.style.pointerEvents = ""), 0);
 });

                onInteractOutside={(e) => {
                  const classes: string[] = [];
                    //add all the classes to the array
                  e.composedPath().forEach((el: EventTarget | HTMLElement) => {
                    if (
                      (el as HTMLElement).classList &&
                      (el as HTMLElement).classList.length > 0
                    ) {
                      console.log(el);
                      classes.push(
                        ...Array.from((el as HTMLElement).classList)
                      );
                    }
                  });

                  // Check if any of the classes contain the specified class names
                  const classNamesToCheck: string[] = [
                    "tox-menu-nav__js",
                    "tox-swatches__row",
                    "tox-dialog"
                  ];
                  if (
                    classNamesToCheck.some((className) =>
                      classes.includes(className)
                    )
                  ) {
                    e.preventDefault();
                  }
                }}

Ugh, took me a long time to track down and fix this bug. This is what worked for me (similar to the solutions above, but without the need for setTimeout):
const ModalComponent = ({
  open = false,
  onOpenChange,
  size = 'narrow',
  className,
  closeOnOutsideClick = true,
  children,
}: ModalProps) => {
  // Workaround to disable Radix ui dialog pointer events lockout, which prevents
  // other elements opened inside the portal from receiving pointer events.
  // https://github.com/radix-ui/primitives/issues/1859#issuecomment-1771356816
  const [hasRendered, setHasRendered] = useState(false)
  useEffect(() => {
    // Force an update to re-enable pointer events in a separate render cycle
    setHasRendered(open)
  }, [open])
  useEffect(() => {
    document.body.style.pointerEvents = ''
  }, [hasRendered])

  return (
    <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>
      <DialogContent
        size={size}
        className={className}
        closeOnOutsideClick={closeOnOutsideClick}
      >
        {children}
      </DialogContent>
    </DialogPrimitive.Root>
  )
}
ModalComponent.displayName = 'Modal'

There really needs to be a proper fix for this.

My use-case was to enable animation so I needed to forceMount the Dialog, but it kept stealing the focus on re-render from other inputs
I was able to fix this by doing the following:
<RadixDialog.Content onOpenAutoFocus={(e) => e.preventDefault()}>


[Question] Can you pause ab-av1?

Is there a way to pause ab-av1 when doing a vmaf or crf-search command and then later un-pause and resume where it left off?
Using v0.8.0 on windows 10.

Nothing baked into the program. However, on Linux you can stop the process tree and then later continue. So this feature is something I'd consider the OS process/task manager being responsible for rather than the program itself. I'm not sure how it works on Windows exactly but I would assume you can do the same thing there.

Nothing baked into the program. However, on Linux you can stop the process tree and then later continue. So this feature is something I'd consider the OS process/task manager being responsible for rather than the program itself. I'm not sure how it works on Windows exactly but I would assume you can do the same thing there.

I looked up on windows and there seemed to be a few solutions to "halt" execution of whatever is happening inside the terminal but none of them actually paused, they either didn't do anything or actually broke out of the current command entirely. Tried to find a way to possibly do it in task manager but no luck there either.
I would agree that in CLI probably it is on the OS to have true pause functionality but I don't think there is on windows from what I can see that functions as a true pause rather than a stop. Not really a big issue since it is not something I've needed to use frequently but I have had times where it'd come in handy. If you ever have the free time and want to add it into ab-av1 itself it'd be swell, thanks for your work

It is actually something I have used in the past, though on Linux. I tend to do background runs using pueue and pueue pause works a treat for this (then later pueue start).
I see pueue supports Windows so perhaps this feature works there too and would suit your needs?

Just tried and it does work for me on windows 10, although slight janky but it gets the job done. Thanks sir

Also unrelated to this question but though I'd ask while you were here, what is a potential reason why during crf-search command the vmaf portion of the search on each sample runs at 90-120+ fps, but when I run a vmaf command on my finished encode and source file it is analyzing it at around 20-30fps? Is it just because the files are much larger and have more complexity since they aren't small samples?

Also unrelated to this question but though I'd ask while you were here, what is a potential reason why during crf-search command the vmaf portion of the search on each sample runs at 90-120+ fps, but when I run a vmaf command on my finished encode and source file it is analyzing it at around 20-30fps? Is it just because the files are much larger and have more complexity since they aren't small samples?

Hmm no idea, I would have expected a similar rate to the sample.

To give you more info I am using the same x265 settings passed through the crf-search command that I'm using when running the vmaf command on the same source file. I thought maybe at first it was due to my hard drive being bottlenecked having its read speed capped by other programs at the same time but I ran ab-av1 on its own to make sure and that didn't make a difference. Anyways, not a big deal it's still plenty fast, if you need any info from me like logs or other specs of my system/the files im analyzing let me know


mltiple gpu

thank you for your interesting work
I have a question about how to run image_train.py in multiple gpus

感谢您的有趣工作 我有一个关于如何在多个 GPU 中运行 image_train.py 的问题

May I ask if you figured it out，I have the same problem.


Deposits are not appearing in history

Configured everything. Got deposit address. All daemons are running. Sent some eth to address. Deposits are not there. Not in balance, not in deposits history. Which container logs should I check to find the issue?

Figured it out. I was using custom geth derived coin with name which was not equal eth. While also using Geth gateway. Checked blockchain logs. In sources for blockchain daemon in peatio got to BlockchainService and WalletService and there were hardcoded validation for currency name for eth, to distinguish from erc20 tokens. Changed those validation for is_erc20 and created my own peatio image for docker. Problem fixed.

Figured it out. I was using custom geth derived coin with name which was not equal eth. While also using Geth gateway. Checked blockchain logs. In sources for blockchain daemon in peatio got to BlockchainService and WalletService and there were hardcoded validation for currency name for eth, to distinguish from erc20 tokens. Changed those validation for is_erc20 and created my own peatio image for docker. Problem fixed.

@StDogbert  I have not gotten further than 404 error how did you tweak it? can u help me?

@TTcoinDeveloper Sure. What do you mean by 404? Where? What is your request? You can't get to the specific page or can't launch anything at all?

It's hard to find information, I suggest you see this https://bitcointalk.org/index.php?topic=5202005.new#new


SEO & Performance Optimization

Based on his recent comments, I think you should add epics for SEO & performance optimization of the website

Acknowledged it and will work on it.


DLL Error

Encountered behavior
As soon as i start the game i get an error saying ""Lantern engine dll error %1 is not a valid win 32 application" after this the game loads without lantern engine. i have the dll file needed to run the mod and visual c.
Installed mods
I have every mod featured on the sadx installer along with dreamcast classic textures by sephus jo. disabling everything but lantern engine did not work.
Steps to reproduce
not sure. start the game i guess?

In SADX Mod Manager right click Lantern Engine and select Verify integrity. If any errors come up, let it redownload the mod.
If this doesn't help, check the file d3d8.dll in your SADX folder. It should match this one https://dcmods.unreliable.network/owncloud/data/PiKeyAr/files/Setup/data/d3d8.dll
If the above doesn't help, you might have some issue with your local DirectX 9 installation.

my direct x isnt working. thanks for the help! ill close this now.