Implement VirtIO sound device

Currently, semu lacks of sound playing feature.
To implement, we can use VirtIO sound with ALSA architecture.

we can use VirtIO sound with ALSA architecture.

Can you illustrate the progress and the potential integration considerations?

Hi @jserv ,
For the progress:

The system can boot up and the ALSA driver will be registered (using make check but not sudo make check as it will complains incorrect parameter related errors).
The host system can see the ALSA driver in system settings (named ALSA plug-in [semu] in Volume Levels).

For potential integration considerations:

We should install the ALSA utilities such as alsa-utils for testing the sound device.
TinyALSA can be used if semu is aiming for a lightweight emulator.

Hi @jserv ,
For the supporting operations mentioned in https://github.com/sysprog21/semu/pull/53, to let semu plays sound I consider it requires to support more operations (and the operations are mentioned in VirtIO official document), should we investigate then list the operations that have to be implemented to support the common sound operation (e.g., playing sound, querying sound device information, etc.)?

should we investigate then list the operations that have to be implemented to support the common sound operation (e.g., playing sound, querying sound device information, etc.)?

Yes, go ahead.

For this issue, I am going to implement VirtIO sound device supporting these operations:

querying the device information

VIRTIO_SND_R_PCM_INFO
VIRTIO_SND_R_CHMAP_INFO
VIRTIO_SND_R_JACK_INFO

playing sound (PCM, specifically)

VIRTIO_SND_R_PCM_SET_PARAMS
VIRTIO_SND_R_PCM_PREPARE
VIRTIO_SND_R_PCM_RELEASE
VIRTIO_SND_R_PCM_START
VIRTIO_SND_R_PCM_STOP

Hi @jserv ,
I am going to make an update of the issue solving progress:

sound card

After investigation, the VirtIO SoundCard at platform/f4400000.virtio/virtio2 is actually attached to the kernel.
However, I can only see controlCX (X stands for the card number of VirtIO SoundCard) in /dev/snd/.
Compared to LoopBack, it will create the following files in /dev/snd:

controlCX
pcmCXDYc
pcmCXDYp

PCM

As the VirtIO SoundCard does not expose any endpoint for PCM playback, there is no way to play sound via VirtIO SoundCard.

I am going to solve the sound card endpoint issue first.

Update:

Sound Card

The VirtIO Sound Card can be brought up after initialization.
I can see the pcmCXDYc appears in /dev/snd/, and aplay -l can list the VirtIO Sound Card.

PCM

speaker-test and aplay exit with non-zero return value because an unknown type (0x0) is sent from driver to virtio-snd after pcm_prepare state.

Statue update:

PCM

After investigation, semu VirtIO device receive the data from TX queue after VIRTIO_SND_R_PCM_PREPARE state.
I am going to implement to receive the PCM frames from TX queue to buffer so that we can play the sound.

I am going to implement to receive the PCM frames from TX queue to buffer so that we can play the sound.

Do you think whether if single-threaded queue manipulation is enough. I am not sure that such TX queue can be operated without extra threads.

Do you think whether if single-threaded queue manipulation is enough. I am not sure that such TX queue can be operated without extra threads.

For my current findings, qemu and rust-vmm do not use any extra threads to operate TX queue.
However, we may consider using extra threads as it seems we have to notify the device to complete transmission once it gets PCM frame from TX queue.

Statue update:

PCM

Findings: the driver sends arbitrary number of PCM frames when transferring data.
I will implement a data structure which holds these arbitrary number of  frames (e.g., queue or scatter list).

Statue update:

PCM

The queue holding arbitrary number of PCM frames is implemented.
The driver (guest Linux OS) still sends the PCM frames after the device receives the PCM frames. It seems that we have to send some signal to inform the driver that the device has received the PCM frames and it should send pcm_start to play the sound.

Update:

PCM

Create a dedicated thread to handle TX.
The pcm_release signal is sent asynchronously.

Actions:

PCM

Create a lock in pcm_start/pcm_stop state.
Check the possible implementation to handle pcm_release state.

PCM

Create a lock in pcm_start/pcm_stop state.
Check the possible implementation to handle pcm_release state.

@idoleat, can you comment the recent work of #53 ?

PCM

Create a lock in pcm_start/pcm_stop state.
Check the possible implementation to handle pcm_release state.

@idoleat, can you comment the recent work of #53 ?

Hi @jserv ,
I thought you may tag the wrong person.
So should I conclude the recent work of #53?

I thought you may tag the wrong person.

No, I was intentionally referring to him.

should I conclude the recent work of #53?

Go ahead.

For my clarity, I would like to confirm the workflow works as:

The driver (guest Linux OS) prepares PCM frame data in memory as a descriptor
The driver (guest Linux OS) signals the TX thread to take the descriptor and tell audio server (PulseAudio/Pipewire) where the PCM frame data is as a audio client
TX thread interrupts the driver (guest Linux OS) that it has instructed audio server to play the PCM frame data so it can be cleaned up/overwritten in memory

I have some concern on the third step since I see the TX thread sends interrupt right after finishing step 2 (correct me if I'm wrong). Typically, sound card sends interrupt every period and ALSA driver polls that interrupt to update hardware pointer for the buffer. If the interrupt is sent right after step 2, audio server may have nothing to play because the driver (guest Linux OS) thinks it has already been played. The driver may thinks audio under-run is happening and may address it.
From my understanding, the length of period normally depends on the capability of sound card hardware and buffer size. So we may use the length that reflects the real hardware. Or we may adjust it for other reasons like batch/fine-grained submission, as long as it won't cause under/overflow or long latency. For sending interrupt every period we may use SIGALRM? It could be two tedious to hook into real hardware interrupts. I've read comments above saying that the driver may prepare arbitrary size of PCM frame data. So to introduce period, we may need to tidy PCM frame data as chunks per period.

Hi @idoleat , I would like to make some statements of the workflows you are concerning for, all based on my understanding of VirtIO standard. So if you think there are still some rooms of uncertainty, just let me know. I will make my observations for interacting with VirtIO standard and VirtIO sound driver (namely, guest Linux OS with Linux Kernel version 6.1) in each list and some statements you have mentioned.
Before we begin, let's look about the Virtqueues that a VirtIO sound device will use for communicating with VirtIO sound driver (from Virtqueue section in sound device):

controlq: sending control messages from driver to device.
eventq: sending notifications from device to driver.
txq: sending PCM frames for output streams (i.e., playback).
rxq: sending PCM frames for input streams (i.e., capture).

Then, let me reply the list you have mentioned.

The driver (guest Linux OS) prepares PCM frame data in memory as a descriptor

By the VirtIO standard, the driver prepares PCM frames in memory, then sends these PCM frames via txq to the device.

The driver (guest Linux OS) signals the TX thread to take the descriptor and tell audio server (PulseAudio/Pipewire) where the PCM frame data is as a audio client

This is not mentioned in the VirtIO standard. For my implementation, as we are using MMIO, I use a TX thread to receive PCM frames sent from the driver so that the main thread of device won't just hang for merely receiving PCM frames.
For my finding, other publicly available implementations such as qemu and rust-vmm do not use a TX thread for receiving PCM frames, and I guess the reason is that they use PCI interrupt mechanism.
What's more, as we can select the PCM features according to <IP_ADDRESS>.2 VIRTIO_SND_R_PCM_INFO, though it seems I receive PCM frames with values within the range of short datatype, I guess the reason why the host playback plays nothing is because it maybe just send the memory area (using VIRTIO_SND_PCM_F_SHMEM_*).

TX thread interrupts the driver (guest Linux OS) that it has instructed audio server to play the PCM frame data so it can be cleaned up/overwritten in memory

For my understanding, there are two ways to interrupt the driver:

PCM I/O messages: in <IP_ADDRESS> PCM I/O Messages, the standard mentions: the completion of such an I/O request can be considered an elapsed period notification.
PCM notifications: using eventq, as mentioned in <IP_ADDRESS> PCM Notifications.

I've read comments above saying that the driver may prepare arbitrary size of PCM frame data.

Sorry for my dumb writings, it should be as follows: the driver sends arbitrary number of virtqueue descriptors (for instance of receiving PCM frames from the driver, it may send the virtqueue descriptors like one request, then follow two payloads consisting of PCM frames--the summation size of these payloads will be the size of buffer_bytes set by VIRTIO_SND_R_PCM_SET_PARAMS--and at last, one response.


Revert "cherry-picked from b8de69dfacf971ad9da3fa03490527795d47e99c"

A previous change ported to the release branch needed code from another change made to main branch. Those changes should be ported in order, so reverting the incorrect port.

This PR fixes #12797

Let's sync with @Charles-Gagnon tomorrow. I'm not sure that reverting is the right approach.

Pull Request Test Coverage Report for Build 294479959

8 of 33 (24.24%)  changed or added relevant lines in 6 files are covered.
2 unchanged lines in 2 files lost coverage.
Overall coverage increased (+0.02%) to 38.766%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

extensions/resource-deployment/src/services/resourceTypeService.ts
6
7
85.71%

extensions/resource-deployment/src/ui/deployClusterWizard/deployClusterWizard.ts
0
1
0.0%

extensions/resource-deployment/src/ui/deploymentInputDialog.ts
0
1
0.0%

extensions/resource-deployment/src/services/notebookService.ts
0
5
0.0%

extensions/resource-deployment/src/ui/wizardBase.ts
0
5
0.0%

extensions/resource-deployment/src/ui/notebookWizard/notebookWizard.ts
2
14
14.29%

Files with Coverage Reduction
New Missed Lines
%

extensions/resource-deployment/src/ui/notebookWizard/notebookWizardPage.ts
1
13.73%

extensions/resource-deployment/src/ui/wizardPageBase.ts
1
22.22%

Totals

Change from base Build 294288318:
0.02%

Covered Lines:
19256

Relevant Lines:
45296

💛  - Coveralls

Shouldn't be needed with the strings fix


Adjust search form box.

Closes #131

Coverage remained the same at 97.872% when pulling 3b90dc076bf83d94541f1830aaa0b7e4e34f5ed2 on search_box_alignment into 1ca58f0c1d78807772455cbeac76b033f3e8003c on master.

Coverage remained the same at 97.872% when pulling 9ce362f3e7c863687ab938f830bd5bdab5c5e7ca on search_box_alignment into b20680351bf8886a29cddb8f6a7db5769fadbe42 on master.


Download template in massmint onboard

discussed with @JustLuuuu

adding a download template to the code structure preview could be beneficial.
design needed
I guess I will also need help from someone from @kodadot/internal-dev to write some comments into the comments and placeholders

Context
Currently there is a lot of confusion how should the mass mint file should look like.
@daiagi dropped an example in the Kodadot Help TG group which looks like this:
file: art1.png
name: Art #1
description: Description for the Art #1
price: 1

file: art2.png
name: Art #2
description: Description for the Art #2
price: 1

file: art3.png
name: Art #3
description: Description for the Art #3
price: 1

file: art4.png
name: Art #4
description: Description for the Art #4
price: 1

Task

in the mass mint create a new link called Download a massmint file template
by clicking on the link it should download a txt file containing the stuff described above
When doing PR please tag @exezbcz so he can guide you with delivery.

You can also add a link to the hello page where we can add more details if necessary.
https://hello.kodadot.xyz/tutorial/minting/how-to-mass-mint-nfts

just note we support .csv, .json and .txt files @Jarsen136 feel free to ask me if you need clarification as to the required formats

if you have examples of other files, I can add it to hello page as examples.

if you have examples of other files, I can add it to hello page as examples.

basically exactly as it is shown in the onboarding
https://canary.kodadot.xyz/ksm/massmint/onboarding
JSON
[
    {
        "file": "file1.jpg",
        "name": "Image1",
        "description": "This is an image",
        "price": 2.45
    },
    {
        "file": "file2.jpg",
        "name": "Image2",
        "price": 200
    },
    {
        "file": "file3.jpg",
        "description": "This is another image"
    }
]

CSV
file,name,description,price
file1.jpg,Image1,This is an image,100
file2.jpg,Image2,,200
file3.jpg,,This is another image,

You can also add a link to the hello page where we can add more details if necessary. https://hello.kodadot.xyz/tutorial/minting/how-to-mass-mint-nfts

I have added the link on the title at #7927
Feel free to leave a review comment if you would like to change something.

Love it. Good job guys.


"Original files don't match" error raised in 0.15.3, but not in 0.13

We (@teresamg and I) are trying to process a pepolar-style dataset. When we ran it through qsiprep 0.13, it ran through with no issues, and the resulting derivatives look fine. But when we switched over to qsiprep 0.15.3, we ran into the following error:
File "/usr/local/miniconda/lib/python3.8/site-packages/qsiprep/interfaces/confounds.py", line 174, in _gather_confounds
    raise Exception("Original files don't match. File a bug report!")
Exception: Original files don't match. File a bug report!

Is this a regression, or is it catching something wrong with our data?

I have the same error in 0.15.3 and 0.15.1, but not in 0.14.3. I have one session and three run, and 31 dwi images in each run (a b0 volume and 30 b=1000 volume).

I have the same issue using v0.15.1 of qsiprep.

I'm trying to track this down. I ran on an example pepolar dataset with matched dir-PA_dwi.nii.gz and dir-AP_dwi.nii.gz. Somehow, the first confound for each phase encode direction is switched, but the rest match.

denoising_original_file	confounds_data_original_file
sub-700002_ses-MR2_acq-98dir_dir-PA_dwi.nii.gz	sub-700002_ses-MR2_acq-98dir_dir-AP_dwi.nii.gz
sub-700002_ses-MR2_acq-98dir_dir-PA_dwi.nii.gz	sub-700002_ses-MR2_acq-98dir_dir-PA_dwi.nii.gz
... the rest match
sub-700002_ses-MR2_acq-98dir_dir-AP_dwi.nii.gz	sub-700002_ses-MR2_acq-98dir_dir-PA_dwi.nii.gz
sub-700002_ses-MR2_acq-98dir_dir-AP_dwi.nii.gz	sub-700002_ses-MR2_acq-98dir_dir-AP_dwi.nii.gz
... the rest match

I think I found the problem. I think that the change in index of the confounds_data frame here
https://github.com/PennLINC/qsiprep/blob/35f2dade6005dc6bdef3ac4729153f2cc236a170/qsiprep/interfaces/confounds.py#L131
causes the original files (and potentially other things added to confounds after this step) to not line up.
Prior to #341, the original files were checked via the == operator, which will complain if the indices are different between the series. Now it's using the eq() function.
I'm not quite sure why this is a problem now and not in 0.14.3, but I think it has to do with the change in pandas version. If I create confounds_data by hand and call "_adjust_indices" on it in 0.14.3 (pandas 0.24.0) the array looks like (abbreviated for display here)
>>> confounds_data
     framewise_displacement   trans_x   trans_y   trans_z
0                       NaN  0.000000  0.000000  0.000000
1                  0.000000  0.000000  0.000000  0.000000
2                  0.566754  0.001273  0.381847 -0.053533
...

but in 0.15.3 (pandas 1.4.1) it looks like
>>> confounds_data
     framewise_displacement   trans_x   trans_y   trans_z
1                  0.000000  0.000000  0.000000  0.000000
2                  0.569442  0.018289  0.402377 -0.044142
...
197                0.371605  0.074939  0.100483  0.020750
0                       NaN  0.000000  0.000000  0.000000

To do:

Check the rest of the confounds matrix is correct, ie the change in index doesn't make other columns incorrect.

Possible fixes:

pandas equals() method instead of eq() method. They treat indexing differently.

sort_index() to put confounds_data back in the ordering 0-N like it is in 0.14.3.

@mattcieslak what was the motivation for trying to shift the nan (comes about because there's no framewise displacement for volume 0) to the end of the confounds data frame?

Sorry I can't read, the whole point of adjust_indices is to shift the missing value to the beginning, which it does (by index) but subsequent operations are not index-aware. Testing a fix with sort_index() now.


[FLINK-2556] Refactor/Fix pre-flight Key validation

Removed redundant key validation in DistinctOperator
Keys constructors now make sure the type of every key is an instance of AtomicType/CompositeType, and that type.isKeyType() is true.
Additionally, the ExpressionKeys int[] constructor explicitly rejects Tuple0
Changes one test that actually tried something that shouldn't work in the first place.

LGTM, +1

LGTM

Merging this...


 Won't approve this PR without seeing the images.
CreateATeam.PNG and CreateATeamSite.png must go in the Teams\Media folder. Please move those images there if you want to add them. Also, follow the naming convention that is there (for example: Create-a-team.png)

@sukihanabi: we cannot merge this PR as is. I have made several comments in the files, approved some of the changes, rejected others, and made suggestions. Please review and adjust accordingly.
Also, going forward, please refrain from combining multiple changes into a single PR. For example, the image changes in the org-wide teams creation should be a PR on its own. Same thing for communication credits changes. That would make processing these a lot faster because different people need to review and sign-off on the changes as different areas are owned by different writers.
Please contact @kenwith if you have follow-up questions.

closing this PR will create One Issue - One PR


C lib: compilation parameters

c_lib("MyCLib"
  # ...
  build_params: [VARIABLE1, VARIABLE2, ..., RELEASE_MODE, SERVER, ....]
)

Will create a separate output folder for each build parameter set, because these define a different compilaton strategy, e.g:

A realease mode which builds with -O0 or -O3 based on the value of the release mode.
An environament like TST, PROD, ... which will compile a different source file based on its value. (PROD would for example compile a source file which contains code that connects to the server, while TST would compile a source file which contains code that returns dummy data instead) (can be accomplished by passing -DEnvironment=TST, or directly in Ruby code)

New syntax


Expose containerinit logs

In order to debug #907, it would be useful to know what is happening internally in containerinit, and exposing logs is a start at that.
My first aim was to redirect the console of the containers to a file, but that is not supported (the console must be a PTY), and the consoles can't be connected after a container has exited to get the log, so instead I have exposed the logs via RPC and used logbuf to pipe them to a file.
Ideally I would like to call something like flynn-host log --init ID to see these logs but would like to get feedback on how that can be achieved? A new flag for attach to return the init logs?

Since this is just for debugging, we could redirect this log into the stdout of the container. I think we just need to do a bit of juggling so that we have the write side of the stdout pipe available to write into.

@titanous I tried just copying to stdout but a few tests which check stdout failed, and the output was intermingled, so I changed the approach to add the init logs to stream 3 in the job log, and support outputting it to stderr by passing --init to flynn-host log.

LGTM


Navigator popUntill() Equivalent needed.

Is your feature request related to a problem? Please describe.
Navigator popUntill method is used to just pop routes from the stack.
In Get offNamedUntill or offNamed or back or offAllNamed are removing some routes and pushing a new route to stack.
What if we need to only pop a few routes from the stack?
Describe the solution you'd like
We can have the same as the Navigator popUntill method to remove some routes.
Describe alternatives you've considered
Navigator.of(context).popUntil((route) => route.settings.name == '/two');
current flow
Get.offNamedUntil("/two", (route) => route.settings.name=='/two');
changed to
    Get.offNamedUntil((route) => route.settings.name=='/two',optional(newroute));
offNamedUntill method can be used. the predicate should be the first argument and 'newrouteName' should be optional If 'newrouteName'  is not supplied we can simply pop the routes using predicate

Get.until();

Get.until();
Thanks.
Is it mentioned in doc or readme file? It will be nicer to see all the functionalities.
Can you refer to something to check all the functionality?

@manojeeva yes is is 😄

you can also type the method in vscode and read the docs about the method

i just noticed that there is an typo in docs,😅


SignlR broken on demo site

Hi Asad,
When I go to the demo site, and type any message, I am getting the following error:

@crh225 it should be fixed as part of this https://github.com/asadsahi/AspNetCoreSpa/commit/cb241be7de16176fb3d43433598ac76fe8adf05f and site is good for chat demo as well.


FAB hides cancel and retry buttons on failed uploads

Summary:
In some cases, the new image upload FAB overlaps with the "X" and retry buttons on failed images. In cases like when there are only two images, the buttons become inaccessible.
Screen-shots:

Would you like to work on the issue?
Yes

I also don't think this is a big issue:)

Yes, we can close this.


Aiohttp 3.8.3 and python 3.12

Is there any crucial changes in newer versions of aiohttp, which could brake this library?
I want to use python 3.12 since other library wrote only for python 3.12, but cant upgrade till aiohttp 3.8.3 not allowed at this python version. The thing i want to do is simple install async faceit apy public branch without requirements and use new versions of python and aiohttp. Will it brake my project?
Thx for your time again :)

I think there is no problem with upgrading the aiohttp package to the
version you need. Im not aware of any breaking changes in aiohttp.
Am Mo., 13. Mai 2024 um 19:58 Uhr schrieb Soulbadguy54 <
@.***>:

Is there any crucial changes in newer versions of aiohttp, which could
brake this library?
I want to use python 3.12 since other library wrote only for python 3.12,
but cant upgrade till aiohttp 3.8.3 not allowed at this python version. The
thing i want to do is simple install async faceit apy public branch without
requirements and use new versions of python and aiohttp. Will it brake my
project?
Thx for your time again :)
—
Reply to this email directly, view it on GitHub
https://github.com/StuartTheYellowOne/async_faceit_api/issues/2, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ATIJNNX5YYCJ3TMVO6KME7TZCD5LRAVCNFSM6AAAAABHUVOKZSVHI2DSMVQWIX3LMV43ASLTON2WKOZSGI4TGNBWHEZTMNY
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Yes! Its working perfect. I think you could upgrade the package in pypi with 3.12 python compability :) Thx you for your work


Automated Package Upgrade

:tada: This PR is included in version 7.7.196 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Parentheses can be removed (IDE0047) false-positives

Following code produces false-positive when dotnet_style_parentheses_in_relational_binary_operators is set to always_for_clarity.
public static bool Foo(int a, int b, bool c)
{
  return (a == b) == c;
}

Since the rule is set to always for clarity, my assumption is that the code is indeed fine as-is.
I understand that the analyzer cannot always guess the parenthesis right in these situations and should ignore the statement rather than producing the message.

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

ID: 410f3156-99cc-2a5c-2696-9d354c4f34c7
Version Independent ID: fe3c3dfe-251f-2585-fe18-7fae3bcc76d0
Content: .NET coding convention settings For EditorConfig in Visual Studio - Visual Studio
Content Source: docs/ide/editorconfig-code-style-settings-reference.md
Product: visual-studio-dev15
GitHub Login: @kuhlenh
Microsoft Alias: kaseyu

This sounds like it belongs to dotnet/roslyn instead, as bug in the analyzer (rather than a documentation issue).

@shadow-cs I agree with @BhaaLseN this is not a documentation issue, and should be logged at https://github.com/dotnet/roslyn/issues instead.

Thanks I'll move it to Roslyn repo then, I wasn't quite clear on where to post it actually.


Make the event triggering the open menu action configurable.

For example change the opening of the  context menu on single left (regular) click.

For now I tweaked the library myself for my purpose:
https://github.com/jonataswalker/ol3-contextmenu/blob/master/src/js/internal.js#L158
I changed contextmenu to click to enable the menu on single click.
Ideally this could be coming as a property when we create the object
new ContextMenu({
'event':'click',
...
})

@ZancaM I'm glad you reached a solution but I'm not sure about this. It looks like, for me, a bit intrusive.
Maybe you have some more arguments? Or others?

With #73 you can set the event type.


Added service_type to get and set messages

Issue #94.
Hoping all is well. I modified the set and get functions in accessory.js, and the prototypes in model.js and controller.js. Working fine for me so far.

Hi. I‘ll have a look tomorrow.

Merging for now but README has to be modified.


Add Support for Config Encryption

If --password=SOMETHING_SECURE is pass the config should be encrypted if it is not already.
If it is done on the first command an unencrypted config should never hit the drive.
An additional command change_password should be added so the user can change it.
It may be worth have encryption required and printing the generated password to be used (would also ensure secure passwords).
The main code needed is already implemented in storjnode/encryptedio.py and only needs to be enabled.
This should only be done when the users can edit the config via the cli and/or gui, as editing an encrypted config is difficult (though possible as its compatible with openssl aes-256-cbc).

@F483 Doesn't this impact usability? This should run in the background and at startup, which means the client it going to have access to the keys.

The client is ultimately going to need access to keys (at the moment just for authentication). Money will have to be stored on the machine (for change at the very least) and even if its moved to cold storage asap the key will need to be stored somewhere.
To make this as save only one deterministic hot wallet is stored in the config that can be easily recovered and it should also be encrypted.
Security is always a usability trade off and we cannot sacrifice security for the convenience.

Well storjnode doesn't hold any money. I think it would make sense to have any cold wallet config encrypted. For the cold wallet you don't have to unencrypt, just have the public key around.
The hot wallet needs to perform many network operations, and maybe be able to pay for fees or transfers automatically. The hot wallet needs to contain a small amount of money which can be accessed without encumbrance(dust level really). Everything extra should be routed to the encrypted cold wallet.

This seems like a very insecure way to handle setting up the encryption. If the password is passed as a command line argument it could be saved to the user's bash_history file which (depending on perms) could allow for privilege escalation by other processes. That's probably why things like ssh don't allow you to pass passwords directly and instead operate in interactive mode for the important stuff (easy to fix this.)
Regarding wallets: Shawn's design [for the farmer] is probably the best we can hope for security-wise (excluding obscure recent developments.) You have enough money around for operating costs (the hot wallet) and move any excessive extra to the cold wallet which will work fine for farmers. Interestingly enough, you could theoretically use a timechain to make a cold wallet gradually thaw over time and trickle small amounts of coins to the hot wallet automatically without the added liability of requiring that the whole wallet ever be fully decrypted - but that is mostly theoretical at this point. Such a device doesn't exist yet (and we should keep the funds design simple anyway.)
We're actually very lucky with this security model since its probably possible to structure this so that the hot wallet never runs out of funds and the cold wallet for the farmer never has to be thawed out. The same cannot be said for a currency exchange where the best you can achieve is trying to predict future volume and then building lists of timelocked transactions from partitioned cold wallets (which may break if the TXs mutate, thus requiring the wallets to be thawed out again.) We don't have to worry about any of that ugliness with storjnode, although the actual wallet that clients use to pay for contracts is my biggest concern here.
It is possible to vastly improve the security for storage of SJCX on the client with N-factor authentication by using a redundant multi-signature scheme like the following:
Client 1 pub, Client 2 pub, Client 3 pub, Server 1 pub, Server 2 pub, Timechain or backup pub
4 of 6 multi-signature
This is the scheme I use for Coinbend-style green addresses and it has some very important security properties:

The funds can only be unlocked with the client's permission. Or to put it another way: if the server or backup key is simultaneously hacked by another person the user's money is still never at risk (since the attacker still needs a fourth key)
N factor authentication can be provided by the server through SMS or something similar (by refusing to sign a client's transaction if the code is incorrect)
If the server turns malicious by refusing to sign a valid transaction or if it disappears entirely: a valid timechain can be used to trustlessly unlock the funds in the future (or you can simply replace this key with a frozen backup key of the user's for simplicity)
It is possible for the client to lose keys and still have enough leverage to sign (using the server's help.)

This scheme would basically allow client wallets to be virtually unhackable in the majority of cases while strictly eliminating the level of trust that a third-party has over the customer's money. I am not entirely sure what the current design is for the client wallet but this is something to strongly consider if you want SJCX to be resistant to script kiddies (otherwise drive-by exploits or worms could own the user which is still a huge issue in the Bitcoin world)

No longer needed as all walled data was removed from the config.


Version in setup not correct

It seems like the version of this library is a copy of AmbiDev.
This assert points to the error:
https://github.com/crowdcent/numerblox/blob/0e4b887efcd9e6b84309b6ac5fb1d0de327e810e/setup.py#L4
@CarloLepelaars Can I create a pull request for this on the development branch?

It appears I misunderstood. This line tests the version of setuptools, not the version of numerblox. Closing the issue.


[Proposal] New interfaces to configure Puree

I'd like to change interfaces to configure Puree. Because

I don't want to specify TAG when I send log
It's not easy to understand where log is sent

Before
Destination definition is far apart from sender.
new PureeConfiguration.Builder(context)
    .registerOutput(new OutDisplay())
    .registerOutput(new OutBufferedLogcat(), addEventTimeFilter, samplingFilter)
    .registerOutput(new OutLogcat(), addEventTimeFilter)
    .build();

I need to know where I should send logs.
In addition, It's not good that I have to specify output plugin by String.
Puree.send(new ClickLog("MainActivity", "BUTTON 1"), OutDisplay.TAG);
Puree.send(new ClickLog("MainActivity", "BUTTON 2"), OutDisplay.TAG);
...

After
It's easy to understand where log is sent at a glance.
new PureeConfiguration.Builder(context)
    .source(ClickLog.class).to(new OutDisplay())
    .source(ClickLog.class).filters(addEventTimeFilter, samplingFilter).to(new OutBufferedLogcat())
    .source(PvLog.class).filter(addEventTimeFilter).to(new OutLogcat())
    .build();

Puree.send(new ClickLog("MainActivity", "BUTTON 1"));
Puree.send(new ClickLog("MainActivity", "BUTTON 2"));
...

It looks simple and intuitive.

Todo

[x] Change interfaces
[x] Add tests
[x] Update documents
[x] Update v2.0.0

@sys1yagi @slightair @gfx What do you think?

LGTM. :+1:

@sys1yagi @slightair @gfx  Finished. We decided to focus on managing logs in this library. I'll upload to jcenter if there is anything.

LGTM :+1:

:eyes:

Thanks guys!


Add list of available analyzers in the Jenkins plugin configuration

It would be nice if the Jenkins plugin configuration page had a list of the currently available analyzers. Each analyzer could be represented with a checkbox and the user could enable/disable an analyzer by toggling the checkbox.

That might lead to difficulties, since there's a .shipshape configuration file in the root of the to-be-analyzed repo that can also control which analyzers run.
That being said, I don't think we even have a CLI tool that lists out the available analyzers, do we?


Verbosity, available options

It would be good to mention, what are the possible values for "Verbosity" (normal, quiet, detailed).

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

ID: 30f597bb-080f-188b-b1ba-a02efbe1e9ca
Version Independent ID: 88e19d47-f4e1-0496-305c-af14f0d54afb
Content: NuGet Command-Line Interface (CLI) Reference
Content Source: docs/tools/nuget-exe-CLI-Reference.md
Product: nuget
GitHub Login: @karann-msft
Microsoft Alias: karann

@johannes-schmitt I notice that on this Install documentation the Verbosity is listed:

Option
Description

Verbosity
Specifies the amount of detail displayed in the output: normal, quiet, detailed.

https://docs.microsoft.com/en-us/nuget/tools/cli-ref-install#options

@johannes-schmitt, this doc is more like an index for all the CLI commands. The individual CLI command do talk about all the options including verbosity like @davidalpert points outs (thanks @davidalpert). Happy to re-open the issue if you feel that does not address your feedback. Thanks for using NuGet!


rxjs 7 deprecation notes: throwError(error: any): Observable<never> is marked as deprecated

currently, nswag use throwError(error: any): Observable<never> to gernearte the 'throw errors',
https://github.com/RicoSuter/NSwag/blob/9b0bbf91840b51da46f7d04a59a8bbe7e5a9a560/src/NSwag.Integration.TypeScriptWeb/scripts/serviceClientsAngular.ts#L63
https://github.com/RicoSuter/NSwag/blob/9b0bbf91840b51da46f7d04a59a8bbe7e5a9a560/src/NSwag.Integration.TypeScriptWeb/scripts/serviceClientsAngular.ts#L66
but it is marked deprecated, see https://rxjs.dev/api/index/function/throwError
In rxjs7 recommands using throwError(errorFactory: () => any): Observable<never>

@rqx110  Any news? Same issue here when.
return _observableOf<T[]>(null as any);
Type 'T' is missing the following properties from type 'T[]': length, pop, push, concat, and 29 more.

This is for everyone who is still looking for a solution to this problem without having to adapt the current NSwag code.
Since I really like NSwag and really wanted to generate the client for Angular, I searched for a solution for a long time and found one.
You can simply take the template AngularClient.liquid, modify it and tell the generator the template folder with the modified template.
This way you can make even more adjustments to the generated client.
I simply expanded the two places in the template:

return {{ Framework.RxJs.ObservableThrowMethod }}(e)
return {{ Framework.RxJs.ObservableThrowMethod }}(response_)

like this:

return {{ Framework.RxJs.ObservableThrowMethod }}(() => e)
return {{ Framework.RxJs.ObservableThrowMethod }}(() => response_)

Have fun :-)


Sometimes the width calculation fail

When bullet calculate the width of terminal could fail throwing this stacktrace:
    _, n = os.popen('stty size', 'r').read().split()
ValueError: not enough values to unpack (expected 2, got 0)```

Using it we asume the standard console width when it fails

Why not use shutil.get_terminal_size()?

Is better to use it https://gist.github.com/jtriley/1108174 than shutil

That code looks like it was meant for Python 2. shutil.get_terminal_size() was added in Python 3.3. I haven't looked into how it's implemented, but I get the sense that it's meant to work across platforms.

Yes, i saw it, shutil is better. I will commit it

shutil.get_terminal_size() returns (columns, lines) but you're taking the lines result now. It also probably isn't necessary it call int() on the result anymore.

Right, i didn't see that.

You're still taking the wrong value. Should be COLUMNS, _ = ...

Right thanks i was clueless 😥

No worries, it happens to me all the time.


Links with depth over "max_depth" don't get sent to the Manager anymore.

Closes #4

Coverage increased (+0.2%) to 96.703% when pulling 9e37e86bcf358868b1afd3f92d190265710bacf9 on depth_limit into fcd9f752cc7c9a5348d9b722cfeb09dc16ae2f54 on master.


Problem with upload_symbols_to_crashlytics by using SPM Firebase Crashlytics

New Issue Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Issue Description
I may be describing more of a question than a problem (sorry :D), but ... it will affect a large number of users, so i would like to see the solution written in the readme (bug = missing information).
Many users use Fastlane together with Firebase Crashlytics. DSYMs can be uploaded here. The path to .../FirebaseCrashlytics/upload-symbols is required for this. If someone uses prebuild cocoapods, the path is quite easy ./Pods/_Prebuild/FirebaseCrashlytics/upload-symbols.
However, with SPM it is a bit more demanding. What is the local path when integrating Crashlytics with SPM?
Failed to find Fabric's upload_symbols binary at /Applications/Fabric.app/**/upload-symbols or ./Pods/**/upload-symbols. Please specify the location of the binary explicitly by using the binary_path option
If you need more information - no problem.

Please use discussions for questions: https://github.com/fastlane/fastlane/issues/16811


Not working on DIVs with inline-block display and floated (left or right)

This plugin works absolutely awesome, but I just found that it doesn't work with elements displayed as "inline-block" and floated (left or right), which in my case, it was intended to center 3 divs inside another div. If the "childs" are floated, it works, otherwise, it doesn't.
Any chance to use matchHeight in divs that are not floated and displayed as "inline-block"?

Can you provide a jsfiddle of your use case? I can't think of a good example where I'd use inline-block and floats at the same time so it's hard to reproduce the issue.

When you're using float on your inline-block element, it becomes blocks.
That's probably root of your issue. You can't have floated inline-blocks.
https://developer.mozilla.org/en-US/docs/Web/CSS/float

Problem Solved, Thanks.


Enable the new model serialization for grafana

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

API change check
API changes are not detected in this pull request.


backlog: add gas reporter plugin in solidity

very convenient
https://github.com/fluidex/plonkit/blob/0a84db7d9844b1a6a91f97f644445bac17d32d45/test/contract/single/hardhat.config.js#L13

Cool, I will have a try.


Perl 6 compilers and virtual machines

I think a Rakudo (compiled to JIT) and a Rakudo JVM (compiled to Java Bytecode) compiler is sufficient as shown here. Niecza hasn't been updated in quite a while. You can submit a new pull request to the compilers repo with those two.

Compiled to JIT??? Sorry I thought you were aiming to show compiler architectures and how they intersected. Rakudo essentially has its own platform underneath that's fairly agnostic of the language similar to CLI and LLVM, but is also agnostic of VM unlike most languages. Not showing that kind of defeats the point of displaying the architectural relationship. But I notice from other PR you don't actually keep the definitions in this repo.

Meant to say JIT compiled to Machine Code, like PyPy. I looked at Rakudo and while it does seem fairly agnostic, I'm not aiming to include every intermediate representation by a compiler. I had updated the README in the compilers repo to clarify this.


Fix jpeg2000 decoding issue

Issue #, if available:
Decoding jpeg2000 is not working
Description of changes:
The main change is to decode using PIL and to map the uid.JPEGLossLess to image/jpeg
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Thanks for your contribution!


Improve "Detected package id/version(s) in the cache that were source-built" warning when package in prebuilt/source-built

Right now this warning is:

Detected package id/version(s) in the cache that were source-built, but contents don't match. They were probably downloaded. See [...]/conflict-report/before-[repo]/ for usage details.

This is misleading since /prebuilt/source-built was added. Before /prebuilt/source-built, there was only /prebuilt/nuget-packages, and source-built packages were explicitly not included. Now, this dir means the package came from the production build. The warning should account for this.

Closing, completed by https://github.com/dotnet/source-build/pull/878.


PHPUnit logging configuration is not respected when passed to php artisan test on Laravel

Description:
PHPUnit logging configuration is not respected when passed to Laravel's php artisan test.
Steps To Reproduce:
In my phpunit.xml I have:
<logging>
        <log type="coverage-text" target="php://stdout" showUncoveredFiles="false" showOnlySummary="true" />
    </logging>

If I run phpunit, at the end I get a coverage report in the shape of:
Code Coverage Report Summary:
  Classes: 50.00% (6/12)
  Methods: 63.64% (14/22)
  Lines:   58.82% (30/51)

If I run php artisan test instead, I only get:
Tests:  7 passed
 Time:   3.04s

php artisan test --coverage-text doesn't work either, even though the default output for the option is to STDOUT.
However, if I run php artisan test --coverage-text=coverage.txt, a coverage.txt with the information I am expecting is created, but I really need this report in my stdout and I am not able to do that.
See my previous issue on Laravel's repo: https://github.com/laravel/framework/issues/33986

I got bitten by this too. It disregarded my phpunit.xml config which tells tests to run on another database, and it wiped out my local dev database with like 16 million rows 😭.
It seems to have been fixed in version 4.2.0.
composer require --dev "nunomaduro/collision ^4.2"

Actually this is more general. php artisan test doesn't care at all about the phpunit.xml file!

@lucavallin What collision version are you using?

Is this broken again, using "nunomaduro/collision" v5.4.0? Doesn't respect the coverage reporting options

I've also encountered this issue (v5.4.0) on my project :confused:
php vendor/bin/phpunit result:
PHPUnit 9.5.4 by Sebastian Bergmann and contributors.

..                                                                  2 / 2 (100%)

Time: 00:00.732, Memory: 42.00 MB

OK (2 tests, 2 assertions)

Generating code coverage report in HTML format ... done [00:02.305]

php artisan test result:
  PASS  Tests\Unit\ExampleTest
  ✓ basic test

   PASS  Tests\Feature\ExampleTest
  ✓ basic test

  Tests:  2 passed
  Time:   0.80s

The Artisan way ignores my code coverage
phpunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
         bootstrap="vendor/autoload.php"
         colors="true"
>
    <testsuites>
        <testsuite name="Unit">
            <directory suffix="Test.php">./tests/Unit</directory>
        </testsuite>
        <testsuite name="Feature">
            <directory suffix="Test.php">./tests/Feature</directory>
        </testsuite>
    </testsuites>
    <coverage processUncoveredFiles="true">
        <include>
            <directory suffix=".php">./app</directory>
        </include>
        <report>
            <html outputDirectory="public/coverage"/>
        </report>
    </coverage>
    <php>
        <server name="APP_ENV" value="testing"/>
        <server name="BCRYPT_ROUNDS" value="4"/>
        <server name="CACHE_DRIVER" value="array"/>
        <server name="DB_CONNECTION" value="sqlite"/>
        <server name="DB_DATABASE" value=":memory:"/>
        <server name="MAIL_MAILER" value="array"/>
        <server name="QUEUE_CONNECTION" value="sync"/>
        <server name="SESSION_DRIVER" value="array"/>
        <server name="TELESCOPE_ENABLED" value="false"/>
    </php>
</phpunit>

--coverage-text of phpunit is still not printing out the coverage when using php artisan test --coverage-text in version 5.11.
The package behaves the same as @Shizzen83 described in his comment.
@nunomaduro is this desired behavior or do we need to change something to work?


ccsmeth train

Hi Peng,
I would like to retrain your ccsmeth model using another ccs or clr dataset with corresponding WGBS data.  I am not sure about your "train_file", is it an aligned bam file, feature .tsv file formatted by step 2 'ccsmeth extract'?  How can I label the methylation level of every site or every ZMW?
ccsmeth train -h
usage: ccsmeth train [-h] --train_file TRAIN_FILE --valid_file VALID_FILE
                     --model_dir MODEL_DIR
  --train_file TRAIN_FILE
  --valid_file VALID_FILE

Can you give me an example command?
Thanks!
Best wishes,
Shuhua

Hi Shuhua,
You can refer this issue in deepsignal. ccsmeth has a similar training procedure. For training it needs feature.tsv files extracted using high-confidence methylatied/unmethylated (in my tests I used methylation frequency in BS = 1.0/0.0 ) sites.
Best,
Peng


Test application generator improvements

Context
The test-data/generate endpoint times out very easily. This is because it is synchronous and has to wait until all applications are generated in order to return a list of IDs
Changes proposed in this pull request
Make the endpoint asynchronous
Touch test applications after they have been generated so that API users still have a way of getting the applications that have just been generated
Audit the touch for transparency in support about how applications are generated
Guidance to review
Do all the changes make sense?
There is some duplication of error detection, but this is so that providers get an instant error if they supply bad params. Maybe worth a refactor to extract the errors out of the generator?
Link to Trello card
https://trello.com/c/PLTc5qtd/3485-investigate-issues-when-generating-20-test-applications-over-the-api
Things to check

[x] This code does not rely on migrations in the same Pull Request
[x] If this code includes a migration adding or changing columns, it also backfills existing records for consistency
[x] API release notes have been updated if necessary
[x] This code does not rely on the addition/removal of Azure config environment variables in the same Pull Request
[x] New environment variables have been added to the Azure config

looks good, just some minor comments. Is this worth a release note, or since its experimental do we avoid that usually?
Regarding the duplication of validations I think we can attempt a refactor to avoid the duplication of logic by either extracting to a shared validator, however that doesn't stop it going through the logic twice, or restructure of the code. What are your thoughts

Looking into restructuring the code for this now


main.py crashes when config file is not present

If you run src/main.py without a config file, you get this error:
File "src/main.py", line 149, in main
  os.path.expanduser(args.assistant_secrets))
File ..., in expanduser
  if not path.startswith(tilde):
AttributeError: 'NoneType' object has no attribute 'startswith'

What should we do in this case? Should we have a default in the code, or should we tell the user to install the default config file?

Additionally, we should add config file installation either to HACKING.md or to install-deps.sh.


[Feature Request]: Fail is TODO: tags exists in the code

Description
If a TODO tag is in the code (e.g. markdown + bicep + parameter files, etc.), a pester test should exist that fails the pipeline for the module.
Could also include other common tags such as:

BUG
HACK
FIXME
DEBUG

The test should fail if any word in a given array is found in the changed files of a PR/pipeline


WASM tracking issue

This tracks support for WASM (either or both targets).
Blocked by:

[ ] Stable kotlinx.coroutines with WASM targets
[ ] Stable org.jetbrains.compose.runtime with WASM targets

Once available, we also need to provide a frame clock.
If someone wants to maintain a WIP PR with unstable versions I'd welcome it, but not going to land anything until the runtime targets are stable.

By stable WASM targets, does this mean waiting until WASM is completely out of experimental phase? Or could you offer a WASM target in the same way (i.e. "it's experimental just like the upstream deps are")?

It means I'm not depending on non-Maven Central repos and non-stable (in a semantic version sense) versions. I think we're probably good to go now with 1.6 being out?

Yeah I think so 👍

What would a frame clock use to tick on WASM? Especially on wasi targets


why the path not contained in the image block

I write ./assets/${filename}.assets in Location box. But when inserting a image to a note, the tag  had not contained the directory.
for example:  When insert a image in a file named file.md, I wish create a image in ./assets/file.assets/file-202408211532.png, and insert a code ![](./assets/file.assets/file-202408211532.png),  but I got ![](file-202408211532.png).

It seems you have the following Obsidian settings.

The plugin doesn't construct links by itself, it relies on Obsidian's functions that rely on those settings


fix(scheduler): make app un-routable

If an app is not routable, then the scheduler should remove the "routable" annotation from the application's service.
This is blocked by a bug in the router: https://github.com/deis/router/issues/233
closes #973

Why is this using labels instead of annotations?
https://github.com/deis/controller/blob/master/rootfs/api/models/__init__.py#L66
annotations are the agreed upon way to set configuration, and not labels, between controller and router
Makes me wonder if this shouldn't live inside the config model (or AppSettings) where it manipulates things outside of the scheduler code, like Domains already do. THoughts?
/cc @krancour

oh wow... ignore me... I didn't realise this was using labels! My bad! weird to have things in so many places doing very similar things...

Current coverage is 85.40% (diff: 100%)

Merging #974 into master will increase coverage by 0.03%

@@             master       #974   diff @@
==========================================
  Files            28         28
  Lines          3116       3117     +1
  Methods           0          0
  Messages          0          0
  Branches        531        531
==========================================
+ Hits           2660       2662     +2
+ Misses          310        309     -1
  Partials        146        146

Powered by Codecov. Last update dcd11fd...924a5ec


Experiment Parameters

Hi,
Congratulations on the great work and thank you for open sourcing the codebase. I am trying to use this codebase to experiment with different multi-modal methods. However, I found the methods I am testing do not get comparable results to those reported in the paper. I am wandering whether this is due to my experiment parameters. Currently, I am using the default ones in the codebase if not otherwise specified in the paper. Could you please clarify the

Number of epochs,
alpha value for AGM method, and
Modulation window (start and end epoch for modulation)

used for AVMNIST, URFUNNY, and CREMA-D datasets? Many thanks in advance!

For AV-MNIST, UR-Funny, CREMA-D, Number of epoch: 1000, 800, 1500, alpha: 2.5, 4.0, 1.5, Modulation window: 0,1000; 0,800; 0, 1500;

Thank you for the prompt response!

Hi, I need a clarification on the alpha parameters given here. It seems like the alpha parameters are different for the early fusion and late fusion cases. could you please provide parameters for the early fusion phase (assuming the provided ones are for the late fusion case)? Many thanks in advance!

Hi, I need a clarification on the alpha parameters given here. It seems like the alpha parameters are different for the early fusion and late fusion cases. could you please provide parameters for the early fusion phase (assuming the provided ones are for the late fusion case)? Many thanks in advance!


Revert https://github.com/apple/swift/pull/33388 [Start using optimization (-O0/-O2/-O3/-Os) and debug (-g) flags from CMAKE_CXX_FLAGS_${CFLAGS_BUILD_TYPE}]

@swift-ci please test

If this passes without issue with the tests, LGTM.


Command line arguments missing

What version of Delve are you using (dlv version)?
Delve Debugger
Version: 0.11.0-alpha
Build: af4798e2a91f2e57aa16fb38ba0275936cbdb2a1
What version of Go are you using? (go version)?
go version go1.6.1 windows/amd64
What operating system and processor architecture are you using?
Windows 10 Pro x64
What did you do?

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println(os.Args)
}

dlv debug -- foo bar
(dlv) c
[C:\repos\...snip...\go\scratch\debug]
Process 7432 has exited with status 0

PS C:\repos\...snip...\go\scratch> .\scratch.exe foo bar
[C:\repos\...snip...\go\scratch\scratch.exe foo bar]

What did you expect to see?
[C:\repos...snip...\go\scratch\debug foo bar]
What did you see instead?
[C:\repos...snip...\go\scratch\debug]

Is this a PowerShell thing or does it happen with cmd.exe also?

It happens with both CMD and PS.

Thanks.

I can't reproduce this on master, can you update, rebuild and try again?

It's reproducible for me with the head of master.

I found this as a byproduct of trying to get things to work with go-debug, but can't get it to work right on the CLI.

The commit that should fix this is 60946a759c03e68520b4e223cea9f79259612a21, the build you specified in the first message does not have that commit.

This bug can't be reproduced and it's been inactive for a while, closing.


What is recommended folder structure?

Right here, I see it's by type. It lets to do barrels easily, but when working on feature, you need to switch between 6 or 8 different folders, and each of them contains a lot of files.
Best practices says it should be by feature, but those examples are way too primitive - contains component, html and css only. When working with ngrx that feature would contain effects, services, reducers, pages/components, etc.. They cannot be barreled into one index.ts file, as it must be spread across declarations/providers/effects in module file.
Any suggestions how to do it correctly?

I'm wondering the same thing. The direction of Google's example app and style guide says to divide by feature. Perhaps as a consequence of this, it also says to put the thing-type - 'component', 'module', etc - in the file name which this approach doesn't do. Short file names are nice but can also be confusing. It's a tradeoff.
I'm working on my first Angular2/Redux app and have chosen to prioritize practices of these great but incongruent expert opinions in the following order loosely based on what I think the market share is. Whenever opinions on the same thing conflict between two different paradigms, I'm using that of the higher one on this list. Let me know how you would order them or if you'd consider other ones.

Angular Style Guide by Google
Tour of Heroes Final Version by Google
Angular CLI by Google and the community
ngrx example app
ng2-state-talk based on Angular-CLI by @JavascriptMick
rangle-starter - Angular 2 with TypeScript and Redux version by @SethDavenport

So far I've tried to take @JavascriptMick's project and bring it into compliance with the Google Style Guide as this fork. Now I'm working on integrating the styles and practices of this ngrx example-app into it.
@Aurimas86 I don't think I understand your last sentences. Are you saying that organizing by feature would present a barrel problem or organizing the way files currently are in the example-app presents a barrel problem? Thanks.

@dancancro About barrels: when I group by feature: components, services, effects end up in same directory. At this point I cannot use single index.js barrel in that folder for all those different exports (Or can I?). I need different index.js for each type somewhere else, so I can include these barreled types in module.

As far as I know, an index.js file is just like any other js file and can technically import from files anywhere else but there is an understanding that they are indexes of their folders' contents and so they should only import from other files in their own folders.
But I'm more interested in the usage of barrels at all. What is the compelling reason to write import statements that use barrels instead of import statements that refer to the files that the index files aggregate? And what is the rationale for having these index files aggregate files in one or another manner?
Answering these questions will help me understand the reasons for organizing files one way or another. I'm sure there are good reasons but I'm new and don't know what they are.

What do you think of this file structure?

For scalability, files are grouped by Feature, not Type
Store files are separate from UI files
There is a small set of file names - "component.ts", "module.ts", "routing.ts", etc. All domain-specific words go into folder names only. This makes it DRYer.  This would improve de-coupling and you can add/remove features as required.  Things which are  common should go in share module.

First off, @dancancro, great idea with separating Store and UI. Really is a novel idea and got me thinking. Regardless, I agree with @metanav regardless of how things have been done in the past and with other classic redux projects. I think everything should be put in the same folder. However, if one were to include e2e.js testing, as well as spec testing, one is potentially looking at 10 files in a single component. I really like the idea of breaking up a single component into three folder.
Let's imagine the following is a component a part of our component called book. It would be something similar to:
├── app
│   ├── book
│   │  ├── store
│   │  │  ├── actions.ts
│   │  │  ├── effects.ts
│   │  │  ├── model.ts
│   │  │  └── reducer.ts
│   │  ├── ui
│   │  │   ├── component.css
│   │  │   ├── component.html
│   │  │   └── component.ts
│   │  ├── tests
│   │  │   ├── component.spec.ts
│   │  │   └── component.e2e..ts

So, what do you think? Obviously, there is still more work to be done(how it fits into the complete tree structure above). However, I really like the idea of having everything centralized to specific components like @metanav mentioned and separating folders to make the folder tree structure cleaner, similar to how @dancancro you mentioned, separating each component into three folders for the store, ui and tests.

@CharlieGreenman  It's really important to recognize that there is a book feature and a book store slice (a.k.a. table, a.k.a. entity type). They happen to have the same name here, "book", and a 1:1 relationship but this is not at all the rule.
Because of this, it really isn't feasible to have just one "book" folder to contain both the entity code and the feature code. There needs to be exactly one for the book entity code and there should be one for each feature that deals with books - the publishing feature, the orders feature, the reviews feature, etc..  It's not really a novel idea. I was using the same approach writing MS Access programs in the '90s. - tables were in one place and forms another and the relationship between them was many-to-many.
Into these feature folders should go the user interface component and component testing code. Into /store/book should go the code for defining (model.ts), reducing (reducer.ts), and acting upon (actions.ts) book state as well as the tests of this code. I'm undecided about where effects should go. In my app, they are imported in feature modules which are in the feature folders but it seems that they can execute in response to activity from any feature so they should instead be imported in a new StoreModule.
If we put the book store code into the book feature folder and have the publishing feature refer to it when it needs books, then that makes the "book" feature a kind of first class feature and the publishing feature second class. To set up a pecking order of features in every instance is unnecessary and just makes life harder.
Make sense?
A couple of thoughts since my last post...
I'm on the fence about shortening /book/book.model.ts to /book/model.ts. I love shortening things but it could make it confusing to see several files in an IDE with the same name. But maybe not and DRY is a nice practice. I've been doing a lot of copying and pasting while trying this out and shortening the names would reduce that work a little with less to change in the import statements.
I am warming up to the idea of establishing a few different common sorts of component file and component class name - component.ts (SearchComponent), page.ts (AdminPage), list.ts (BookList), detail.ts (OrderDetail), etc. If we all understand that a page is a kind of component and agree on what it means to be a page, then we can name something AdminPage instead of AdminPageComponent for example, and know that it is decorated with @Component and all else that goes with being a component, and a page.
If you would like to see how my thoughts are evolving, here is the app I'm making to learn this.

@Aurimas86 great issue I am having the same thoughts.
@dancancro I like the way you are heading, by feature feels better to me.

I've just stumbled upon folder structure, that looks really good, at http://jasonwatmore.com/post/2016/08/16/angular-2-jwt-authentication-example-tutorial . All file types (services, guards, reducers etc.) except views got their own folders as in ngrx sample. In addition, these folders prefixed with "_" to maintain good folder order. Each feature (pages, components, html etc.) contains its own folder (not in single folder as it's in ngrx example).

@Aurimas86 said:

Actually, right now, I'm getting the point of Google style guide.  Everything is registered at module level. When doing ngrx example way or my suggested way, user will need to wait whole app to download.

I see lazy loading as a key point of feature modules. Most of the actions/effects/reducers/etc are only relevant once a feature module is being used, so ideally there's no need to wait for them to be loaded up front if that part of the app is never accessed.
However, features aren't completely isolated from each other, so at least some module bits need to be available at the global level, if only to provide the actions related to loading the module dynamically. That suggests an eager/lazy split - either within the module itself, or splitting more 'global' code out somewhere else in the project hierarchy (possibly adding tighter coupling between the module and where it's used.)

@dancancro I like the idea of shortening names, it's really hard to read those long and repetitive names. IDEs for the most part will show part of the file path so it makes it easy to tell them apart (at least in Webstorm it is if you have the file tab panel to the right instead of the top. Also, I like the Store files are separate from UI files. Naming container components "page" seems a bit award however, a page may contain potentially several of these.
Use Case:
        Entity detail Page
----------------------------------------------
  read only details  (or toggle view/edit)
----------------------------------------------
------- child routes with associated items ----
tab1 | tab2 | tab3
----------------------------------------------
     Associated Item tab info
----------------------------------------------

Hmm, let's think about this.
What if "tab" were another type of component in addition to "page"? So you'd have something like
|─ customer
├── page.ts
├── routing.ts
├── orders
│   ├── tab.ts
├── profile
│   ├── tab.ts
├── payments
│   ├── tab.ts

or maybe we use "page" for both. Would this present a problem?
|─ customer
├── page.ts
├── routing.ts
├── orders
│   ├── page.ts
├── profile
│   ├── page.ts
├── payments
│   ├── page.ts

The point would be for the part of the filename preceding the extension (page, detail, list, tab, etc) to, by convention, indicate what kind of component the @Component class in that file is.
Then we'd have a glossary somewhere that says something like
page - a component that fills the body of the page and can contain details, lists and tabs
detail - a component that displays a single entity and must be contained in a page
list - a component that displays an iterated list of things and must be contained in a page
tab - a detail that fills a tab
We'd need to hash these out but you get the idea.

We're getting there I think. The other aspect of my use case there is that the child routes could have their own workflow of CRUD and therefore is that a "page"? If so, then how can semantically a page be within a page though... If would follow html 5 then that would actually be a "section"?
Take a look at the route definition I have (converted to your example above):
const customerViewRoutes: Routes = [
  {
    path: 'view',
    children: [ {
      path: ':id',
      component: CustomerDetailPageComponent,
      children: [{
        path: 'notes',
        loadChildren: 'app/customer/notes/module#NoteModule'
      },
        { path: 'orders', component: CustomerOrderList },
        { path: 'payments', component: CustomerPaymentList },
        { path: 'profile', component: CustomerProfileDetail },
        { path: '', redirectTo: 'notes' } // default
      ]
    }
    ]
  }
];

Now "notes" there has its own "page" component which in turn has child routes for listing/editing.
In the case of the tabs, I use a reusable component that contains a  so that makes the content of each tab indiferent to whatever it wants to display.

I think it all depends on how we define each type of component. By a broader definition of 'page' that doesn't limit to things that fill the body of the page, your notes component might be such a thing. But I'd like for page to mean that the thing fills the <router-outlet> of the main file app.page.html. I hadn't thought of CRUD-workflowness being part of a definition, but it could.
If the notes component displays a list of notes, then maybe 'list' would fit better. If it displays one note at a time then it would seem more like this hero detail component or this crisis detail component or this contact page from Tour of Heroes.
I'm not 100% sure why the Tour of Heroes files were named as they were. Some include '-detail' and some don't. I suspect that names were not the main point of the demos and this was not thought about as carefully as we're doing here.
I don't think it's critical to form an exhaustive and final taxonomy at this point. We can figure it out as we see more use cases and in the meantime name things that don't fit into any classification 'component.ts' until that happens. But I bet folks on this project have enough experience to get us pretty close if this were the approach the project wanted to take.

Hi all. I came across this ngrx starter example which takes a different file structure approach. Have you seen it? I'm wondering what you think of it.
One big difference from the style guide structure and this example's structure is the use of a frameworks directory next to a components directory.  What were your influences? Had you studied the Angular style guide and this example before taking the direction that you took?

The above sounds good but I still resist the .component. in the name... Why is this necessary?

One of the most important properties of any folder structure or architecture is consistency. Many choices don't matter that much, as long as you keep things consistent. In that way the things a developer expects will match what he will find (predictability).
What I see happening a lot, and don't like, is that many open source projects are not following the official styleguide, but without having any solid arguments for it. I would argue that when it comes to subjective points like 'should I include 'component' in the file name, one should always follow the official styleguide. The 'but I like x slightly better' argument doesn't weigh up against the 'decreased predictability' argument, especially for any open source project.
Another very important property of any architecture is re-usability and modularity. How easy is it to take a feature of an app and re-use it in another app.
The most extreme form of re-usability is a feature which is written as a npm package. When you write (certain) features like that, you can just install them into any app, and use them.
This property is something that is covered well in the official styleguide, as opposed to structures where things are grouped by type (e.g services, directives, reducers etc.).
In the end the choice is up to you.
For authors open source projects I would recommend to use the official styleguide, and only divert from it if they have a very good reason to do so.
For the architects of commercial projects I would recommend to define important properties which they want their architecture to have. When having done this they preferably should see  if the official styleguide covers these properties, and if so, follow it. If not, they should create their own styleguide.

Is this discussion making any progress?  I agree that the current split is now an example that fights the feature oriented lazy-loading path highlighted by the core team.  If that's best practice, then highlighting how to do effects and reducers in a lazy-loadeing compatible way would seem to be the best practice path

I've been organizing things something like this (edited from full structure for clarity):
.
├── app
│   ├── pages
│   │   ├── home
│   │   │   ├── home.component.css
│   │   │   ├── home.component.html
│   │   │   ├── home.component.ts
│   │   │   ├── home.actions.ts
│   │   │   ├── home.routes.ts
│   │   │   ├── home.module.ts
│   │   │   └── home.spec.ts
│   │   ├── pages.module.ts
│   ├── state
│   │   ├── index.ts
│   │   ├── reducers
│   │   │   ├── index.ts
│   │   │   ├── sample.reducer.ts
│   │   ├── effects
│   │   │   ├── index.ts
│   │   │   ├── sample.effects.ts
│   ├── app.component.html
│   ├── app.component.css
│   ├── app.component.ts
│   ├── app.module.ts
My goal was to separate the emitting of actions from the processing of actions.  My reasoning is I want to be able to take out any component, module, service, etc and put it in a library so the rest of the team can use it. I felt that the actions a component can emit should be kept along side the component, but what to do when those actions occur should be up to the individual application.  The has been working pretty well, it's nice having all the state related logic in one area of the application.

I keep coming back to this example app and every time I do, I can't help but notice how sloppy the file/folder structure is.  It is not scalable for even the smallest app.  The example app has reducers, state, and selectors all bundled up in a single index.ts file, it's already a mess.  I wish somebody would clean this up as people look to this app for guidance.  We have our folders broken down like this - root level has many feature module folders.  Every feature module folder has the following folders:

Actions
Components
Effects
Models
Reducers
Services
State

It used to be just a single file instead of a folder, but we discovered that each feature module would often need multiple reducers + state, so this is what it morphed in to.

@ryanlangton What's the difference between your State and Models directories?
What do you think of the argument that two features (pages of the app) might make use of the same slice of the store, just as they may the same tables in relational database, and by Redux doctrine each slice ought to have all reduction/schema centralized in a single reducer/model, therefore the reducer for that slice shouldn't be located in the directory of either feature, but rather in a separate place? I suppose for most slices that is a theoretical unreality, but for things like user or route, it's pretty likely. In other words why not put your Reducers and State/Models directories in a place other than the feature directories?
I agree that there's gotta be a more scalable way to deal with selectors.
Tangentially, granted new Angular best practices are still taking shape, do you find a resistance in Angular upper thought leadership specifically or web development education generally to preach what you practice or do the obvious departures just make it seem that way?

@ryanlangton if you look at the example-app for V4, its pretty much exactly what you've mentioned. As stated previously, the example-app isn't imposing a structure on you for your application. Its best practices for using ngrx. If patterns emerges from usage, that's fine.

Any benefit to move ngrx actions, reducers, etc into a service for component to consume? For example, here is the login-form.component.ts (https://github.com/ngrx/platform/blob/master/example-app/app/auth/components/login-form.component.ts)
Having ngrx imports and implementation wrapped in a feature service might make it easier for components to consume?

Checkout Nrwl Nx.  It uses its own schematics to create custom cli commands that wire up ngrx scaffolding up for you.  If you are looking for a great way to structure your Angular apps, I highly recommend you give it a shot.  Checkout the video in the link...
https://nrwl.io/nx

@dancancro I structured my app like the comment above yours.
You said What do you think of the argument that two features (pages of the app) might make use of the same slice of the store.
And I'm hitting exactly this issue. I can't use forFeature, and I combine everything at the root.


Revert "Pin datasets for now"

Reverts huggingface/accelerate#477

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


clarify the difference between primary and secondary GCs

I believe there's even been some internal confusion about this, but the clarification I put forward is:
secondary GCs cannot appoint or remove primary GCs, but can appoint secondary GCs.

Duplicate of #38


use query params in view collection

Hi
first of all thanks for this great project .
is there a way to use query parameters in viewCollection sql queries ?
like this:
select count(*) from likes where post_id =<EMAIL_ADDRESS>

No, view queries cannot be parameterized (you can also check https://github.com/pocketbase/pocketbase/discussions/2121, https://github.com/pocketbase/pocketbase/discussions/1948).

An alternative approach to what you are trying to do is to use GROUP BY:
SELECT
  (ROW_NUMBER() OVER()) as id,
  count(*) as likes,
  post_id,
FROM likes
GROUP BY post_id

This will create a collection with 3 fields - id, likes and post_id and then you can request only the likes for the specific post with the list/search api, something like:
const result = await pb.collection("example").getFirstListItem(`post_id = "${yourPostId}"`)

thanks , is querying with pocketbase sdk over view collections efficient ? i mean is that all in the end sql query ?


nightscout_calibrations gives traceback with Dexcom G4 connected to USB

When I try to get the calibartions in openaps it fails:
pi@pi3:~/oa-cgm-loop $ openaps use cgm nightscout_calibrations 1
Traceback (most recent call last):
  File "/usr/local/bin/openaps-use", line 4, in <module>
    __import__('pkg_resources').run_script('openaps==0.2.0-dev', 'openaps-use')
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 534, in run_script
    self.require(requires)[0].run_script(script_name, ns)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1438, in run_script
    execfile(script_filename, namespace, namespace)
  File "/usr/local/lib/python2.7/dist-packages/openaps-0.2.0_dev-py2.7.egg/EGG-INFO/scripts/openaps-use", line 63, in <module>
    app( )
  File "/usr/local/lib/python2.7/dist-packages/openaps-0.2.0_dev-py2.7.egg/openaps/cli/__init__.py", line 51, in __call__
    self.run(self.args)
  File "/usr/local/lib/python2.7/dist-packages/openaps-0.2.0_dev-py2.7.egg/EGG-INFO/scripts/openaps-use", line 57, in run
    output = app(args, self)
  File "/usr/local/lib/python2.7/dist-packages/openaps-0.2.0_dev-py2.7.egg/openaps/uses/__init__.py", line 92, in __call__
    return self.method.selected(args)(args, app)
  File "/usr/local/lib/python2.7/dist-packages/openaps-0.2.0_dev-py2.7.egg/openaps/uses/__init__.py", line 31, in __call__
    return self.method(args, app)
  File "/usr/local/lib/python2.7/dist-packages/openaps-0.2.0_dev-py2.7.egg/openaps/uses/use.py", line 45, in __call__
    output = self.main(args, app)
  File "/usr/local/lib/python2.7/dist-packages/openaps-0.2.0_dev-py2.7.egg/openaps/vendors/dexcom.py", line 830, in main
    results = super(iter_calibrations, self).main(args, app)
  File "/usr/local/lib/python2.7/dist-packages/openaps-0.2.0_dev-py2.7.egg/openaps/vendors/dexcom.py", line 420, in main
    for item in candidates:
  File "/usr/local/lib/python2.7/dist-packages/dexcom_reader/readdata.py", line 301, in iter_records
    records = list(self.ReadDatabasePage(record_type, x))
  File "/usr/local/lib/python2.7/dist-packages/dexcom_reader/readdata.py", line 267, in GenericRecordYielder
    yield record_type.Create(data, x)
  File "/usr/local/lib/python2.7/dist-packages/dexcom_reader/database_records.py", line 158, in Create
    return cls(unpacked_data, raw_data)
  File "/usr/local/lib/python2.7/dist-packages/dexcom_reader/database_records.py", line 180, in __init__
    self.check_crc()
  File "/usr/local/lib/python2.7/dist-packages/dexcom_reader/database_records.py", line 47, in check_crc
    raise constants.CrcError('Could not parse %s' % self.__class__.__name__)
dexcom_reader.constants.CrcError: Could not parse Calibration

Gettting calibatrions from the same Dexcom works fine with the Android Uploader.

I have no idea how to fix it but am experiencing the same error.  Using a Dexcom G4 (pediatric) US model with Raspberry Pi 3.


design template matching system

How are applicable templates determined?

a list of string/regex patterns as the key and the value as the template name
"first matching template" the "winner?

the user must put them in the right "order"

alternatively: most specific name (CSS style) "wins"

feels intuitive, but these means building a scoring system --- complicated

pattern = 1 point per field
string = 10 points per field
tie breaker is the higher one in the list

Perhaps of use: https://docs.python-cerberus.org/en/stable/

From the #7 about designing onyo fsck:

validate the contents of all files against their respective templates

As soon as the template system is designed/implemented, onyo fsck needs a functionality to verify the correctness of templates, when:

templates change
files change

To keep this issue up to date:
In #92 I ignored all the things above!
The current behaviour is this:
onyo new --template laptop shelf creates a new asset in the folder "shelf", it opens the current dialog from onyo new and asks for fields (including reserved characters), which are specified in the template file .onyo/templates/laptop (which is YAML). The flag expects the name of a file in that folder.

I think this can be closed now. Templates are specified by the user explicitly for a long time now, and I see no compelling reason to change that.


Textarea any action within the textarea reset the focus to the end of the text

When I remove text(or add) from the middle of a sentence the textarea focus is reset to the end of the text.
Example:

All I have is onChange event that dispatch action that update a state (counter of how many chars + the text) to the state. once i remove the onChange everything is fine.
When i remove the onchange everything works, and when i remove the field from redux forms (....textarea) everything works. so it seems they don't work well with each other.
Thanks

This is a React bug, I think. #786


Wireless transmitter (Wireless grid) not working in another dimension

Issue description:
I set up "new" transdimensional network. When I use the crafting gid (in another dimension) everything is fine, but the wireless transmitter that I also connected in that dimension has no effect (whan trying to open the gui (wireless grid) nothing happens - not even an error message like there is one in overworld (out of range or something).
What happens:
What you expected to happen:
Open grid like in overworld.
Steps to reproduce:

Go to another dimension and connect the refined storage system with netword receiver/transmitter.
Add wireless transmitter.
Open wireless grid - nothing happens

setup: http://prntscr.com/c7ootz
...
Version (Make sure you are on the latest version before reporting):

Minecraft: 1.10.2
Forge: <IP_ADDRESS>5
Refined. Storage: 0.8.20

If a (crash)log is relevant for this issue, link it here:
[pastebin/gist/etc link here]

There, fixed :)


HW breakpoints: "invalid hex 116" message from GDB during Opentitan Verilator simulation

My Environment

EDA tool and version:
Verilator 4.210 2021-07-07 rev v4.210
(openocd) Open On-Chip Debugger 0.11.0
(riscv32-unknown-elf-gdb) GNU gdb (crosstool-NG <IP_ADDRESS>8_5075e1f) 11.1

Operating system:
PRETTY_NAME="Debian GNU/Linux rodete"
NAME="Debian GNU/Linux"
VERSION_ID="rodete"
VERSION="12 (rodete)"
VERSION_CODENAME=rodete
ID=debian

Version of the Ibex source code:
Two versions:

Version 1: I work on the OpenTitan repo v: dd14447ef716bb62ce539e48b4841c7f4e1d2ed7

In [rtl] Add support for additional HW breakpoints #1125, DbgHwBreakNum were added to support multiple hardware breakpoints in the Ibex core. I did the following modifications in my local Opentitan repo to enable 8 breakpoints in the earlgrey configuration of Opentitan:

diff --git a/hw/ip/rv_core_ibex/data/rv_core_ibex.hjson b/hw/ip/rv_core_ibex/data/rv_core_ibex.hjson
index 0f05f52cf..d82feb8b9 100644
--- a/hw/ip/rv_core_ibex/data/rv_core_ibex.hjson
+++ b/hw/ip/rv_core_ibex/data/rv_core_ibex.hjson
@@ -317,6 +317,13 @@
       expose:  "true"
     },

+    { name:    "DbgHwBreakNum"
+      type:    "int unsigned"
+      default: "8"
+      local:   "false"
+      expose:  "true"
+    },
+
     { name:    "SecureIbex"
       type:    "bit"
       default: "0"
diff --git a/hw/ip/rv_core_ibex/rtl/rv_core_ibex.sv b/hw/ip/rv_core_ibex/rtl/rv_core_ibex.sv
index 847168636..56ca88c81 100644
--- a/hw/ip/rv_core_ibex/rtl/rv_core_ibex.sv
+++ b/hw/ip/rv_core_ibex/rtl/rv_core_ibex.sv
@@ -29,6 +29,7 @@ module rv_core_ibex
   parameter bit                   ICacheScramble   = 1'b1,
   parameter bit                   BranchPredictor  = 1'b1,
   parameter bit                   DbgTriggerEn     = 1'b1,
+  parameter int unsigned          DbgHwBreakNum     = 1,
   parameter bit                   SecureIbex       = 1'b1,
   parameter ibex_pkg::lfsr_seed_t RndCnstLfsrSeed  = ibex_pkg::RndCnstLfsrSeedDefault,
   parameter ibex_pkg::lfsr_perm_t RndCnstLfsrPerm  = ibex_pkg::RndCnstLfsrPermDefault,
@@ -355,6 +356,7 @@ module rv_core_ibex
     .ICacheScramble           ( ICacheScramble           ),
     .BranchPredictor          ( BranchPredictor          ),
     .DbgTriggerEn             ( DbgTriggerEn             ),
+    .DbgHwBreakNum            ( DbgHwBreakNum            ),
     // SEC_CM: LOGIC.SHADOW
     // SEC_CM: PC.CTRL_FLOW.CONSISTENCY, CTRL_FLOW.UNPREDICTABLE, CORE.DATA_REG_SW.SCA
     // SEC_CM: EXCEPTION.CTRL_FLOW.GLOBAL_ESC, EXCEPTION.CTRL_FLOW.LOCAL_ESC
diff --git a/hw/top_earlgrey/data/top_earlgrey.hjson b/hw/top_earlgrey/data/top_earlgrey.hjson
index e9422f146..6ae37d98c 100644
--- a/hw/top_earlgrey/data/top_earlgrey.hjson
+++ b/hw/top_earlgrey/data/top_earlgrey.hjson
@@ -721,6 +721,7 @@
                    ICacheScramble: "1",
                    BranchPredictor: "0",
                    DbgTriggerEn: "1",
+		   DbgHwBreakNum: "8",
                    SecureIbex: "1",
                    DmHaltAddr: "tl_main_pkg::ADDR_SPACE_RV_DM__ROM + dm::HaltAddress[31:0]",
                    DmExceptionAddr: "tl_main_pkg::ADDR_SPACE_RV_DM__ROM + dm::ExceptionAddress[31:0]",

Version 2: Unmodified, fresh Opentitan repo supporting only a single debug point (OT repo v: f7dd866865479c79e07a086f073dd44d3a87e13d)

Issue

I followed Opentitan Verilator Setup to build the Verilator executable, build the Opentitan firmware, and to connect to the Verilator via Openocd+GDB.
After running a few commands without any problems, GDB displays the following message and simulation suspends/freezes: Ignoring packet error, continuing...Invalid hex digit 116. After this point, the only way to end the simulation is to use kill -9 <verilator-proc-id> (See the examples below)
The same hardware configuration (with 8 debug points) runs without any problem on an CW310 FPGA board.
I also observe a similar behavior with the original Opentitan configuration with a single hardware breakpoint supported (see the GDB example 3 below).
I tried to increase the timeout for remote commands but it did not solve the issue: set remotetimeout 30.

Examples

Here are a few example outputs from different  debug sessions:

verilator command:  build-out/hw/sim-verilator/Vchip_sim_tb   --meminit=rom,build-bin/sw/device/lib/testing/test_rom/test_rom_sim_verilator.scr.39.vmem   --meminit=flash,build-bin/sw/device/tests/otp_ctrl_smoketest_sim_verilator.64.scr.vmem  --meminit=otp,build-bin/sw/device/otp_img/otp_img_sim_verilator.vmem

openocd command and output: openocd -s util/openocd -f board/lowrisc-earlgrey-verilator.cfg

Info : only one transport option; autoselect 'jtag'
Info : Hardware thread awareness created
force hard breakpoints
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : Initializing remote_bitbang driver
Info : Connecting to localhost:44853
Info : remote_bitbang driver initialized
Info : This adapter doesn't support configurable speed
Info : JTAG tap: riscv.tap tap/device found: 0x04f5484d (mfg: 0x426 (Google Inc), part: 0x4f54, ver: 0x0)
Info : datacount=2 progbufsize=8
Info : Examined RISC-V core; found 1 harts
Info :  hart 0: XLEN=32, misa=0x40101106
Info : starting gdb server for riscv.tap.0 on 3333
Info : Listening on port 3333 for gdb connections
Info : accepting 'gdb' connection on tcp/3333
Warn : keep_alive() was not invoked in the 1000 ms timelimit. GDB alive packet not sent! (1043 ms). Workaround: increase "set remotetimeout" in GDB
Info : [0] Found 8 triggers
Warn : keep_alive() was not invoked in the 1000 ms timelimit. GDB alive packet not sent! (1083 ms). Workaround: increase "set remotetimeout" in GDB
Warn : keep_alive() was not invoked in the 1000 ms timelimit. GDB alive packet not sent! (1018 ms). Workaround: increase "set remotetimeout" in GDB
Warn : keep_alive() was not invoked in the 1000 ms timelimit. GDB alive packet not sent! (1008 ms). Workaround: increase "set remotetimeout" in GDB
Warn : keep_alive() was not invoked in the 1000 ms timelimit. GDB alive packet not sent! (1003 ms). Workaround: increase "set remotetimeout" in GDB
Warn : keep_alive() was not invoked in the 1000 ms timelimit. GDB alive packet not sent! (1091 ms). Workaround: increase "set remotetimeout" in GDB
Warn : keep_alive() was not invoked in the 1000 ms timelimit. GDB alive packet not sent! (1002 ms). Workaround: increase "set remotetimeout" in GDB
Warn : keep_alive() was not invoked in the 1000 ms timelimit. GDB alive packet not sent! (1059 ms). Workaround: increase "set remotetimeout" in GDB

GDB example 1: Modified OT, supporting 8 hardware breakpoints

gdb command and output: riscv32-unknown-elf-gdb -iex "set remotetimeout 30" -iex "target extended-remote :3333" -iex "info reg"   build-bin/sw/device/lib/testing/test_rom/test_rom_sim_verilator.elf

(gdb) tbreak rom_test_main
Temporary breakpoint 1 at 0x823a: file ../sw/device/lib/testing/test_rom/test_rom.c, line 52.
(gdb) tbreak *0x20000480 ==> ENTRY POINT FOR THE FLASH
Temporary breakpoint 2 at 0x20000480
(gdb) j *0x8084 ==> CHIP RESET VECTOR'S ADDRESS
Continuing at 0x8084.

Temporary breakpoint 1, rom_test_main () at ../sw/device/lib/testing/test_rom/test_rom.c:52
52	  CHECK_DIF_OK(dif_pinmux_init(
(gdb) c
Continuing.
Ignoring packet error, continuing...
Warning:
Cannot insert breakpoint 2: Invalid hex digit 116

Command aborted.
(gdb)

GDB example 2: Modified OT, supporting 8 hardware breakpoints :

(gdb) tbreak rom_test_main
Temporary breakpoint 1 at 0x823a: file ../sw/device/lib/testing/test_rom/test_rom.c, line 52.
(gdb) j *0x8084
Line 91 is not in `mmio_region_read32'.  Jump anyway? (y or n) y
Continuing at 0x8084.

Temporary breakpoint 1, rom_test_main () at ../sw/device/lib/testing/test_rom/test_rom.c:52
52	  CHECK_DIF_OK(dif_pinmux_init(
(gdb) si
0x0000823c	52	  CHECK_DIF_OK(dif_pinmux_init(
(gdb) si
0x0000823e	52	  CHECK_DIF_OK(dif_pinmux_init(
(gdb) si
0x00008240	52	  CHECK_DIF_OK(dif_pinmux_init(
(gdb) tbreak rom_test_main
Temporary breakpoint 2 at 0x823a: file ../sw/device/lib/testing/test_rom/test_rom.c, line 52.
(gdb) j *0x8084
Line 91 is not in `rom_test_main'.  Jump anyway? (y or n) y
Continuing at 0x8084.

Temporary breakpoint 2, rom_test_main () at ../sw/device/lib/testing/test_rom/test_rom.c:52
52	  CHECK_DIF_OK(dif_pinmux_init(
(gdb) si
0x0000823c	52	  CHECK_DIF_OK(dif_pinmux_init(
(gdb)
0x0000823e	52	  CHECK_DIF_OK(dif_pinmux_init(
(gdb)
0x00008240	52	  CHECK_DIF_OK(dif_pinmux_init(
(gdb)
0x00008242	52	  CHECK_DIF_OK(dif_pinmux_init(
(gdb)
0x00008246	52	  CHECK_DIF_OK(dif_pinmux_init(
(gdb)
0x0000824a	52	  CHECK_DIF_OK(dif_pinmux_init(
(gdb)
Ignoring packet error, continuing...
Invalid hex digit 116
(gdb)

GDB example 3: Modified OT, supporting only a single hardware breakpoint:

  (gdb) si
  [0] Found 1 triggers
  mmio_region_write32 (base=..., offset=28, value=48) at /usr/local/google/home/bilgiday/Documents/opentitan/ot-repo3/sw/device/lib/base/mmio.h:145
  145	  ((volatile uint32_t *)base.base)[offset / sizeof(uint32_t)] = value;
  (gdb) tbreak rom_test_main
  Temporary breakpoint 1 at 0x823a: file ../sw/device/lib/testing/test_rom/test_rom.c, line 52.
  (gdb) j *0x8084
  Line 91 is not in `mmio_region_write32'.  Jump anyway? (y or n) y
  Continuing at 0x8084.

  Temporary breakpoint 1, rom_test_main () at ../sw/device/lib/testing/test_rom/test_rom.c:52
  52	  CHECK_DIF_OK(dif_pinmux_init(
  (gdb) si
  0x0000823c	52	  CHECK_DIF_OK(dif_pinmux_init(
  (gdb) si
  0x0000823e	52	  CHECK_DIF_OK(dif_pinmux_init(
  (gdb)
  0x00008242	52	  CHECK_DIF_OK(dif_pinmux_init(
  (gdb)
  0x00008246	52	  CHECK_DIF_OK(dif_pinmux_init(
  (gdb)
  0x0000824a	52	  CHECK_DIF_OK(dif_pinmux_init(
  (gdb)
  Ignoring packet error, continuing...
  Invalid hex digit 116
  (gdb)

Question

When I run the GDB sequences in the examples on Verilator, I consistently get the same errors. On the FPGA, everything works fine.
I am not sure if something is wrong with my environment (e.g, openocd/GDB settings) or if there is a problem with how Verilator model handles the requests from GDB/Openocd. I just wanted to open a thread to discuss the issue and check if anyone has an idea on the root cause of it.

Thanks for the report. I suspect it's something to do with the Verilator/OpenOCD interface given it works fine on FPGA. I'll see if 8 hardware breakpoints works on Ibex Super System (FPGA system that gives you an Ibex core and debug and not much else, far simpler than OT so easier to debug) as a first step.

@GregAC - not sure if there were any updates on this or if this is something that has been resolved in one-to-one communications? When you have a chance could you see if this is something that is still a live issue.

Quick update: I've had a look at an Ibex Super System build with 8 trigger points on FPGA and all looks to work fine. So whatever is happening here is specific to the OT Verilator infrastructure.


Add isDarkMode function ( for IOS 13+ )

Feature Request
It will be great to have a function "isDarkMode" for IOS 13.
Why it is needed
It's needed to style an application different in the dark and light IOS 13 mods.

It's going to go into the core and until then I think you want this? https://github.com/expo/react-native-appearance


Windows installation package configuration

Package the exe installation package, hoping to support the configuration of the installation interface language, custom shortcut names, and some other configurations

Supported, will be released in the next version, supports custom display name and installation directory name
app_id: C52EDEB4-E345-4C95-BF90-E2BF83CF2B30
publisher_name: LeanFlutter
publisher_url: https://github.com/leanflutter/flutter_distributor
display_name: Hello World
create_desktop_icon: true
install_dir_name: HELLO-WORLD
locales:
  - zh


feat(notification): use errgroup for message handler batch size

fix notification message queue
add e2e notification worker test

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

44 of 44 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.2%) to 77.909%

Totals

Change from base Build<PHONE_NUMBER>:
0.2%

Covered Lines:
2839

Relevant Lines:
3644

💛  - Coveralls

Moving improvement of parallelization to another PR later as more analysis is needed for that


Make TimescaleDB available with JDBC syntax

As a Developer i want to use TimescaleDB in Testcontainers similar to PostGIS.
Currently a PostGIS container can be started when following JDBC Url is given:
jdbc:tc:postgis:9.6-2.5:///databasename
I want to have the same behavior for Timescale DB. I propose following JDBC Url:
jdbc:tc:timescaledb:///databasename

I propose following JDBC Url

what is the official JDBC URL type for TimescaleDB?

Same as the Postgres JDBC Url, since timescale DB is an Extension in PostgreSQL it works pretty similar to PostGIS.


I'm unable to assist with this request.

When i run this on my use case i keep getting I'm unable to assist with this request. , this output seems to be from the world model output . But i dont see anything in the prompt that could make it give this response. Also it seems kinda arbitrary , for some cases it will output this on the first page , whereas for some it will traverse multiple pages before throwing this error .
Any suggestions ?
Thanks in advance .

I've been having similar problems lately, from time to time.

@awes61 have you found any workaround ?


toInclude doesn't work with Map object

Example:
it('toInclude should work for Maps', () => {
  const obj = { a: 'a', b: 'b', c: 'c' };
  const map = new Map();
  Object.keys(obj).forEach(k => {
    map.set(k, obj[k]);
  });
  expect(map).toInclude({ b: 'b' });
});

Error: Expected Map (3) {'a' => 'a', 'b' => 'b', 'c' => 'c'} to include { b: 'b' }

It'd be new Map(Object.entries(obj)) ;-)
The trick here is that there's not a clean way to identify that something is a Map.
You can easily work around this by doing expect([...map]).toInclude(Object.entries({ b: 'b' })).
(official Object.entries polyfill: https://www.npmjs.com/package/object.entries)

Thanks for that nicer shorthand :)
Why wouldn't something like this work:
if (value instanceof Map) {
    // handle (expect(Map))
}

Is there some edge case with false positives/negatives that I'm not considering?

instanceof is never reliable, and doesn't work cross-realm (like another iframe or web worker, or node's vm module).

How unreliable is instanceof in a nodejs environment? I'm sure I don't speak for everyone, but I don't ever see myself using expect within a browser. Would it be possible to detect these environments and warn about this being unreliable in those cases, but allow it when in an environment that supports it?

@bschlenk you have no idea if any of your dependencies are giving you an object that came from another realm, so, just as unreliable as in a browser.
Separately, no, it would be a very bad idea for behavior to be environment-dependent (as opposed to capability-dependent) - that would be very confusing and error-prone to code.

Detecting native or es6-shimmed Map/Set is doable via an abstraction; detecting core-js-shimmed Map/Set reliably is possible as of v2.5.1+ (iirc). This seems like a reasonable enhancement to consider.


Update port for node

Current port for node is 9000, it will change to 5001 or have to change const?

This const is for the gateway server, 5001 is correct.
Default port for FullNode is defined here
https://github.com/MystenLabs/sui/blob/6c009b9b0fb214402f3caf361ea4f888f0f9c9b4/crates/sui-config/src/node.rs#L75-L78

This const is for the gateway server, 5001 is correct.
Default port for FullNode is defined here
https://github.com/MystenLabs/sui/blob/6c009b9b0fb214402f3caf361ea4f888f0f9c9b4/crates/sui-config/src/node.rs#L75-L78

Thanks, clear now!