Local redis support

Add Local Redis Support
Motivation
This PR introduces support for local Redis alongside the existing Upstash Redis implementation. This addition aims to enhance development workflows by allowing developers to work with a local Redis instance, reducing dependency on external services during development and testing.
Summary of Changes

Implemented a RedisWrapper class to abstract Redis operations, supporting both Upstash and local Redis clients.
Added configuration options to switch between local and Upstash Redis using the USE_LOCAL_REDIS environment variable.
Updated Redis-related functions (getChats, saveChat, etc.) to work with the new RedisWrapper.
Enhanced error handling and logging for Redis operations to improve debugging and reliability.
Updated documentation to reflect the new local Redis option.

Testing Instructions

Clone the updated repository and install dependencies.
Set up a local Redis instance (instructions in README.md).
Copy .env.example to .env and set USE_LOCAL_REDIS=true.
Modify docker-compose.yaml to use Dockerfile.test instead of Dockerfile
Run the application and perform the following tests:

Create a new chat/search
Verify that the chat history is saved and can be retrieved
Perform multiple searches and ensure chat history persists
Clear chat history and verify it's removed from Redis

Set USE_LOCAL_REDIS=false and repeat steps 4-5 to verify Upstash Redis still works as expected.

Potential Impacts

No breaking changes to existing functionality.
Improved development workflow with local Redis option.
Slight changes to Redis key structures for better compatibility between local and Upstash Redis.

Additional Notes

This PR does not modify any core application logic, focusing solely on the Redis implementation.
Performance impact should be minimal, with potential improvements for local development environments.
Future considerations may include adding more Redis operations as needed and further optimizing the RedisWrapper class.

Checklist

[x] Updated README.md with local Redis setup instructions
[x] Updated .env.example with new environment variables
[x] Performed manual testing with both local and Upstash Redis
[x ] Removed unnecessary debug logging used for testing
[x] Reviewed and updated code comments

Closes #[110] Provide local Redis option

Hi @casistack , Thank you for the pull request!
Deploy to Vercel
I deployed it on Vercel, but there are errors. It seems that bun add redis is necessary.
Error
Failed to compile.
./lib/redis/config.ts
Module not found: Can't resolve 'redis'

https://vercel.com/morphic-ai/morphic/2v1P2pJpqgFz3PFyXUkQx5KAM8Za?filter=errors
Local Build with Docker
I tried testing with Docker, but even with USE_LOCAL_REDIS set, it connects to Upstash and results in an error. Is there a problem with your environment?
Error
morphic-1  |  ○ Compiling / ...
morphic-1  |  ✓ Compiled / in 21.8s
morphic-1  | Error: [Upstash Redis] The 'url' property is missing or undefined in your Redis config.
morphic-1  |     at new o (/app/.next/server/chunks/ssr/node_modules_9f757d._.js:10881:27)
morphic-1  |     at /app/.next/server/chunks/ssr/[root of the server]__c891cd._.js:252:15

.env.local
USE_LOCAL_REDIS=true
LOCAL_REDIS_URL=redis://redis:6379
UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=

Hi There,
I have now added bun add redis. In terms of the docker. As i mentioned  above, you need to chang the docker-compose.yaml to use Dockerfile.test in my repo. Your main Dockerfile clones your repo and i didnt want to change too much of what you already have. Personally, i think it will be better to use my Dockerfile.test as the main Dockerfile as the user will have to clone the repo anyway but wasn't too sure if you cloned the entire repo for a reason. This might be why the .env.local is not being used.

I have now added bun add redis.

Thank you！ The deployment was successful.

you need to chang the docker-compose.yaml to use Dockerfile.test in my repo.

I'm sorry, I overlooked this step.
I was able to confirm that it works with both Upstash and Local Redis. Perfect. Thank you for your excellent work. As you pointed out, let's make Dockerfile.test the main Dockerfile. I will merge this PR once that change is made.

Ok i have made the change to Dockerfile.


Changelog for focal-1.1.0

Details
focal-1.1.0 doesn't appear in Github releases, but it's been released to Dockerhub.
Digging in the Discord channel I understand focal-1.1.0 is a stable release, just not published in Github.
The Changelog still points to Github Releases. Would it be possible to have a changelog for this new release? Thanks!

@mserranom I found out what happened, someone named a branch using our release naming scheme and it automatically built and pushed a corresponding image (we build and push all branches for testing purposes).
focal-1.1.0 was not released actually, so we are going to figure out how to prevent this from happening in the future. Thank you for bringing this to our awareness.

Thanks @Theaxiom


Unable to find back  camera

HI，when i operate the project，the UI show “Unable to find back  camera”，please tell me how to fix it?

@tomret
You can try to use the front camera instead. There is an enumeration of cameras in PhoneCamera.Start method, you can add logs and see what cameras are available on your device.

Hi,I can't find the enum in  PhoneCamera.Start method。Besides，i wanna  test in PC but it does't work and show me “Unable to find back camera” 。

@tomret it's not an enum, what I mean is that the camera is picked in the Start method. Change this piece of code:
for(int i = 0; i < devices.Length; i++)
{
     if(!devices[i].isFrontFacing)
     {
           this.backCamera = new WebCamTexture(devices[i].name, Screen.width, Screen.height);
     }
}


RFM - squeezelite-x

Current Maintainer
needs_new_maintainer

[ ] I am the maintainer of the package and wish to pass it to someone else.

I DON'T Want To Become The Maintainer

[ ] The maintainer is not needs_new_maintainer.
[X] I have followed the Package Triage Process and I do NOT want to become maintainer of the package.
[ ] The last attempt to contact the maintainer was at least 7 days ago.
[X] There is no existing open maintainer request for this package.

Checklist

[X] Issue title starts with 'RFM - '

Existing Package Details

Package URL: https://community.chocolatey.org/packages/squeezelite-x
Package source URL:

Date the maintainer was contacted (in YYYY-MM-DD):
How the maintainer was contacted:

There is a tickbox that says  The maintainer is not needs_new_maintainer. and this having that maintainer means that you cannot use this to request a new maintainer.


No matches for unit in the search index

Searching for unit yields no matches; this should probably lead to modules#Loading_and_Basic_Importing (which likely needs to be fleshed out a little further).
I'm also not sure whether unit sub MAIN is documented anywhere?

Does not look like it. It's not in /language/packages, either...


Navigation bar appears a second after the page load

Related thread: https://forums.appgyver.com/#!/steroids-native-ui:navigation-bar-pop-up-one-s
This happens using Supersonic with non-preloaded views. Supersonic updates navigation-bar only after view has loaded - hence the navigation bar pops up "late".
Current workaround is to use preloads. Combined with keepLoading: true in layers.push this should not be a problem.
In the very first view after initial view building, refer to this issue as a possible upcoming workaround.
If you have a repro of this with preloaded views, please post it underneath.

+1

+1

+1

+1


fix ability to add multiple creators

https://github.com/antleaf/nims-mdr-development/issues/391

It works as expected.

It works as expected.


How do we set the config to Evolve all Ratata's and Pidgeys?

What do we need to set in the config.json to automatically evolve all rattatas and pidgeys, then automatically exchange the evolved ratatats and pidgeys and rinse and repeat?

As your other issue #240, you should ask your question on slack in the help or configs channel.


feature/UIDS-248 update modal spacing and content

Adjusted padding on ModalHeader and ModalBody to follow Figma.
Changed the subtitle and body content to use a light font weight.
Added Medium sized Modal.

I know there were conversations about removing subtitle from the ModalHeader. As I was looking through rails-server, I did notice that there were actually about 12 or so files that utilized the subtitle. I am considering holding off on removing the subtitle (at least for this PR) since it would require a bit of rearranging of the subtitle prop and then adding in that same subtitle into the ModalBody (on top of needing some better definition of how these subheaders should be presented in the ModalBody
e.g. <p> or <h6> or whatever we decide) Just considering effort v. impact. Happy to explore this further if there are other opinions!
subtitle in ModalHeader

same subtitle text moved into ModalBody


Automatically Update APIView DevOps PAT

DevOps PAT is refreshed often. We need to implement a way to automatically update APIView DevOps PAT and restart the server.

closing as dup of https://github.com/Azure/azure-sdk-tools/issues/8077


Sequential requests

What is the most efficient way to run multiple queries in sequence without running into callback hell?  Say I have 5 select queries, of which the recordsets returned are dependent on the previous query.  What is the best to way to do this?  I realize this is probably simple but I can't seem to find the best way from the docs.
Thanks.

You can use async, Promises or Async/await. Examples of the last two are mentioned in docs.


[GSK-2292 GSK-2293] Add args kwargs to the public methods of the model and all

Description

Add args and kwargs to the public methods of the model class and subclass
Add backward compatibility tests

Type of Change

[ ] 📚 Examples / docs / tutorials / dependencies update
[ ] 🔧 Bug fix (non-breaking change which fixes an issue)
[x] 🥂 Improvement (non-breaking change which improves an existing feature)
[ ] 🚀 New feature (non-breaking change which adds functionality)
[ ] 💥 Breaking change (fix or feature that would cause existing functionality to change)
[ ] 🔐 Security fix

LGTM!
My only concern is on the unused args and kwargs, which impacts the code smell. But I think we have to do it if without a better solution...

Let me change to def method(..., *_args, **_kwargs) to prevent code smells


adding datasource fails

Task:
  - name: add prometheus datasource
    grafana_datasource:
      name: prometheus
      grafana_url: "http://localhost:3000"
      url: "http://prometheus:9090"
      ds_type: prometheus
      basic_auth_user: admin
      basic_auth_password: admin

Error:
TASK [add prometheus datasource] **************************************************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: TypeError: a bytes-like object is required, not 'str'
fatal: [node01]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n  File \"/tmp/ansible_0qkfiabg/ansible_module_grafana_datasource.py\", line 540, in <module>\n    main()\n  File \"/tmp/ansible_0qkfiabg/ansible_module_grafana_datasource.py\", line 523, in main\n    result = grafana_create_datasource(module, module.params)\n  File \"/tmp/ansible_0qkfiabg/ansible_module_grafana_datasource.py\", line 376, in grafana_create_datasource\n    auth = base64.b64encode(to_bytes('%s:%s' % (data['grafana_user'], data['grafana_password'])).replace('\\n', ''))\nTypeError: a bytes-like object is required, not 'str'\n", "module_stdout": "", "msg": "MODULE FAILURE", "rc": 1}

$ ansible --version
ansible 2.6.1
  python version = 3.6.5 (default, Jun 17 2018, 12:13:06) [GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-9<IP_ADDRESS>)]

Where this task come from? We don't have it in current role version and we also don't use grafana_datasource module.

I found it in the ansible docs: https://docs.ansible.com/ansible/2.5/modules/grafana_datasource_module.html

You are referencing a problem with a module which isn't used by this role.
You are not using any variable from our role in this task.

Closing since this is NOT related to ansible-grafana but more likely to ansible itself.


MRG, BUG: Fix errant writing of too large int

Closes #7897
@Alex159 can you switch to this branch and try your original code that failed and see where you get an error now? Hopefully it's in the instantiation of the Epochs object or during writing. If it's during writing, then we should figure out what other functions you're using that are modifying events without checking to see if the int32-max value is being exceeded.

@larsoner - First, just want to say an extra thank you for looking into this issue. It is really appreciated! Hopefully this will avoid future problems of a similar nature.
Second - I switched to this branch and tried rerunning the code that originally gave the problem. First I verified the version:
assert mne.__version__ == '0.22.dev0'
Then I loaded the large epochs file that saved fine (13 GB).
epochs_concat = mne.read_epochs('epochs-epo.fif')
I then extracted my 10 classes from the data and pulled out an equal amount of them such that each of the 10 classes is equally balanced:
min_val = 9640
class1 = epochs_concat["class1"][:min_val]
class2 = epochs_concat["class2"][:min_val]
class3 = epochs_concat["class3"][:min_val]
class4  = epochs_concat["class4"][:min_val]
class5 = epochs_concat["class5"][:min_val]
class6 = epochs_concat["class6"][:min_val]
class7= epochs_concat["class7"][:min_val]
class8= epochs_concat["class8"][:min_val]
class9 = epochs_concat["class9"][:min_val]
class10 = epochs_concat["class10"][:min_val]

I then concatenate these together:
epochs_concat = mne.concatenate_epochs([class1, class2, class3, class4, class5, class6, class7, class8, class9, class10])
This produces the following output:
C:\Users\AXM1390\AppData\Local\Continuum\anaconda3\envs\tf2\lib\site-packages\mne\epochs.py:2975: RuntimeWarning: overflow encountered in long_scalars
  int((10 + tmax) * epochs.info['sfreq']))

Adding metadata with 16 columns
Replacing existing metadata with 16 columns
96400 matching events found
Applying baseline correction (mode: mean)
Created an SSP operator (subspace dimension = 1)

<ipython-input-6-7b59483c15a2>:15: RuntimeWarning: The events passed to the Epochs constructor are not chronologically ordered.

0 bad epochs dropped

I typically plot the time samples to see if they have a sharp drop in them (when overflow happens). It does happen in this case.
Here is a picture of the plot:
This means when I attempt to save the concatenated epochs, each now equally balanced, with the following command:
epochs_concat.save('epochs_balanced-epo.fif')
I get the OSError:
OSError                                   Traceback (most recent call last)
<ipython-input-7-09f8c55bb895> in <module>
      1 # save
----> 2 epochs_concat_reduced.save('bigram_10class_equal_epochs-epo.fif')

<decorator-gen-200> in save(self, fname, split_size, fmt, overwrite, verbose)

~\AppData\Local\Continuum\anaconda3\envs\tf2\lib\site-packages\mne\epochs.py in save(self, fname, split_size, fmt, overwrite, verbose)
   1662             # avoid missing event_ids in splits
   1663             this_epochs.event_id = self.event_id
-> 1664             _save_split(this_epochs, fname, part_idx, n_parts, fmt)
   1665
   1666     def equalize_event_counts(self, event_ids, method='mintime'):

~\AppData\Local\Continuum\anaconda3\envs\tf2\lib\site-packages\mne\epochs.py in _save_split(epochs, fname, part_idx, n_parts, fmt)
     92
     93     with start_file(fname) as fid:
---> 94         _save_part(fid, epochs, fmt, n_parts, next_fname, next_idx)
     95
     96

~\AppData\Local\Continuum\anaconda3\envs\tf2\lib\site-packages\mne\epochs.py in _save_part(fid, epochs, fmt, n_parts, next_fname, next_idx)
    190     end_block(fid, FIFF.FIFFB_PROCESSED_DATA)
    191     end_block(fid, FIFF.FIFFB_MEAS)
--> 192     end_file(fid)
    193
    194

~\AppData\Local\Continuum\anaconda3\envs\tf2\lib\site-packages\mne\io\write.py in end_file(fid)
    347     """Write the closing tags to a fif file and closes the file."""
    348     write_nop(fid, last=True)
--> 349     check_fiff_length(fid)
    350     fid.close()
    351

~\AppData\Local\Continuum\anaconda3\envs\tf2\lib\site-packages\mne\io\write.py in check_fiff_length(fid, close)
    340         if close:
    341             fid.close()
--> 342         raise IOError('FIFF file exceeded 2GB limit, please split file or '
    343                       'save to a different format')
    344

OSError: FIFF file exceeded 2GB limit, please split file or save to a different format

I've included the only changes I make to the data in the hope that might clarify / give an idea as to what might be the issue.
I hope this helps to clarify the problem a little bit. If not please let me know anything else I can try.

Alex

epochs_concat = mne.read_epochs('epochs-epo.fif')

Can you np.savez_compressed('out.npz', epochs.events), mne.io.write_info('out-info.fif', epochs.info) (anonymize the instance first if you want), upload these somewhere and let me know the len(epochs) and len(epochs.times)? This will hopefully be enough for me to reproduce the issue with only a couple MB uploaded somewhere rather than several GB.

Sure thing.
Here is the link to those two files.
print(len(epochs))
print(len(epochs.times))

>> 96400
>> 201

Fingers crossed this allows you to see what the issue is underlying all this.
Thanks! - Alex

@Alex159 it looks like this events list is already corrupted on disk:
[[     830494           0         103]
 [     831020           0         103]
 [     833887           0         103]
 ...
 [-1847587768           0         110]
 [-1847584272           0         110]
 [-1847584156           0         110]]

a workaround for you for now is to  do epochs.events[:, 0] = np.arange(len(epochs.events)). I assume the problem arose when doing concatenate_epochs, so I've made it so that this now does this substitution (with a warning) when concatenating epochs with event numbers that are too large.
To store data relevant to your epochs (e.g., if the sample numbers are critical to keep, or represent something other than actual sample numbers), I recommend using metadata: https://mne.tools/dev/auto_examples/preprocessing/plot_metadata_query.html

Hi Lars,
Just an FYI that the suggested fix didn't work - still get the FIFF saving error. Not sure if this changes the proposed fix or anything. If I keep the dtype as int32 then it doesn't save, but if I force the dtype of the concatenated epochs to be int64 first, then when applying your fix, I get this error when saving:
ValueError: events array values must not exceed<PHONE_NUMBER>, got<PHONE_NUMBER>
I've not come across this one before. Looks like the issue is elsewhere.

If I keep the dtype as int32 then it doesn't save

What is the traceback you get for this?

if I force the dtype of the concatenated epochs to be int64 first, then when applying your fix, I get this error when saving:

Good, this is intended behavior. You should not change the dtype, it is unsafe. Try instead doing:
epochs.events[:, 0] = np.arange(1, len(epochs.events))

then saving. On this PR we do this now in concatenate_epochs.
Where in your code do you get negative events now? Is it immediately after epochs = read_epochs(fname)? If so, we can add a little bit of code to read_epochs to "reset" the event numbers when it sees negative ones.

Pushed a commit that should "correct" the events when reading a FIF that had events incorrectly saved.

If I keep the dtype as int32 then it doesn't save

What is the traceback you get for this?

Thanks for the response 👍
Keeping dtype as int32 and using the proposed solution, I again extract out equal amounts of the 10 classes and then concatenate the results. I then use the proposed solution to overwrite the first column with the np.arange function and when I then call the save method, this is the traceback:
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-23-9a7da58ff897> in <module>
      1 # save
----> 2 epochs_concat.save('epochs_concat-epo.fif', overwrite=True)

<decorator-gen-200> in save(self, fname, split_size, fmt, overwrite, verbose)

~\AppData\Local\Continuum\anaconda3\envs\tf2\lib\site-packages\mne\epochs.py in save(self, fname, split_size, fmt, overwrite, verbose)
   1662             # avoid missing event_ids in splits
   1663             this_epochs.event_id = self.event_id
-> 1664             _save_split(this_epochs, fname, part_idx, n_parts, fmt)
   1665
   1666     def equalize_event_counts(self, event_ids, method='mintime'):

~\AppData\Local\Continuum\anaconda3\envs\tf2\lib\site-packages\mne\epochs.py in _save_split(epochs, fname, part_idx, n_parts, fmt)
     92
     93     with start_file(fname) as fid:
---> 94         _save_part(fid, epochs, fmt, n_parts, next_fname, next_idx)
     95
     96

~\AppData\Local\Continuum\anaconda3\envs\tf2\lib\site-packages\mne\epochs.py in _save_part(fid, epochs, fmt, n_parts, next_fname, next_idx)
    190     end_block(fid, FIFF.FIFFB_PROCESSED_DATA)
    191     end_block(fid, FIFF.FIFFB_MEAS)
--> 192     end_file(fid)
    193
    194

~\AppData\Local\Continuum\anaconda3\envs\tf2\lib\site-packages\mne\io\write.py in end_file(fid)
    347     """Write the closing tags to a fif file and closes the file."""
    348     write_nop(fid, last=True)
--> 349     check_fiff_length(fid)
    350     fid.close()
    351

~\AppData\Local\Continuum\anaconda3\envs\tf2\lib\site-packages\mne\io\write.py in check_fiff_length(fid, close)
    340         if close:
    341             fid.close()
--> 342         raise IOError('FIFF file exceeded 2GB limit, please split file or '
    343                       'save to a different format')
    344

OSError: FIFF file exceeded 2GB limit, please split file or save to a different format

As I save, there are no negative events anymore. That's what I meant before in that I don't think that can be the problem that's causing the failure. I hope something in the traceback can point those who are much more familiar with the codebase in the direction of the solution / fix.

There must be some bug with our estimation of the size we write out. I'll see if I can replicate locally. In the meantime, doing split_size='1.9GB' in epochs.save or so is probably a suitable workaround.

I again extract out equal amounts of the 10 classes and then concatenate the results.

As a side note -- why not just use equalize_event_counts for this?

I added tests with metadata and even splitting and concatenating epochs and can't replicate unfortunately. If you want to upload your huge file somewhere with a script I can give it a try, or if you can live with doing split_size='1.9GB' (and it works) then we can just live with the imperfect code for now :(

There must be some bug with our estimation of the size we write out. I'll see if I can replicate locally. In the meantime, doing split_size='1.9GB' in epochs.save or so is probably a suitable workaround.

"1.9GB" did not work, but "1GB" did (even though the files that were saved were all 1.4 GB. As long as I can get around it this way, I am happy. I didn't know there was a split_size parameter, so I'm really glad you mentioned that.

I again extract out equal amounts of the 10 classes and then concatenate the results.

As a side note -- why not just use equalize_event_counts for this?

I didn't know about this method either. I have had really big problems with overfitting though and am currently trying to have a really random distribution of samples over different recording sessions. It seems there is an attempt to try to keep events as close as possible using that suggested method - which I can certainly see has its place in most studies. However, I do feel better if I am in control of the exact preprocessing pipeline. I will look into this for future analyses though.
Thanks for all the help :)

but "1GB" did (even though the files that were saved were all 1.4 GB.

Good to know -- we clearly have a big problem with some aspect of the writing-size estimation. It would be great if you could share the file with me for testing. But it's huge so let's see if we can make it more reasonable first!
So if your files are roughly 10 GB and we want them to be 100 times smaller (~100MB), how about you do:

Save 1/100th of them to a new split file:out_epochs = epochs[::100]
out_epochs.save('smalller-epo.fif', split_size='10M')

Check that this results in N files, and that they (at least the first N-1) are bigger than 10 MB? Hopefully 14MB-ish? This would mimic the 1GB->1.4GB behavior.
Upload these files somewhere (hopefully they are ~100 MB in total)?

Also feel free to try with higher decimations (:200 :1000) to get fewer ~10/14MB files if you want to reduce upload size, but 100MB-ish is already fine for me.
If this doesn't work, I can also live with the ~10 GB transfer if you have somewhere you can put it up for even a short period of time.

@Alex159 do the ideas above about how to share make sense?

Ping @Alex159 , any chance to get a version of the problematic file?
@agramfort in the meantime I think this can be merged, it already has some useful fixes.

@larsoner Apologies, I've been out of the country for the past 8 days and just got back. I will attempt what you proposed this afternoon. Looks like a good way to figure out the problem. I will update with the link once it's up.

Here are the steps I followed and the resulting data:
I loaded the same data I was working with from before. I then extracted my 10 classes, extracted the same amount from all of them (9640) and then concatenated them together. This resulted in a new Epochs data structure with 96400 events, of size 9.24 GB in memory.
<Epochs |  96400 events (all good), -0.1 - 0.7 sec, baseline [-0.1, -0.1], ~9.24 GB, data loaded, with metadata,
 'class1': 9640
 'class2': 9640
 'class3': 9640
 'class4': 9640
 'class5': 9640
 'class6': 9640
 'class7': 9640
 'class8': 9640
 'class9': 9640
 'class10': 9640>

I then attempted to extract every 100th event using the suggested code above:
out_epochs = epochs[::100]
This resulted in an Epochs data structure with 964 events, approximately 94.8MB, each of the 10 classes having 96/97 samples each.
<Epochs |  964 events (all good), -0.1 - 0.7 sec, baseline [-0.1, -0.1], ~94.8 MB, data loaded, with metadata,
 'class1': 97
 'class2': 96
 'class3': 96
 'class4': 97
 'class5': 96
 'class6': 97
 'class7': 96
 'class8': 96
 'class9': 97
 'class10': 96>

That's fine so far. However, if I try to then save this and select the split size as "10MB" using the following code:
out_epochs.save('smalller-epo.fif', split_size='10MB')
I then get over 25 files, each 591.6 MB in size. I almost ran out of memory performing this so I interrupted the process because obviously, this is now larger than the original data I loaded. I don't know how much longer it would have gone on making more of those files.
There is something definitely wrong here. I will try to play around a bit more with it, but this last result has very much confused me as I was not expecting this result. Is there anything else you would like me to try?

I then get over 25 files, each 591.6 MB in size.

If you copy just the first two files to a different directory, can you epochs_read = mne.read_epochs(..., preload=True) and have it work (probably with a warning about some split files missing)? If so, if you then epochs_read.save('smaller-er-epochs.fif', split_size='10MB') does it still write out > 10 MB files?
If so, then if you can at least upload those first two files (~1GB) somewhere, I'm happy to download them and I should be able to replicate your issue.
If you want to try making things smaller, or if just having the two files will not read_epochs properly, you might be able to do epochs[:2].save(..., split_size='10MB') or :10 or :100 or something...

I copied 3 of the files over to a new folder but unfortunately mne.read_epochs throws a FileNotFoundError when it can't fetch the rest of the files.
FileNotFoundError: [Errno 2] No such file or directory: 'test\\smaller-epo-3.fif'
The files smaller-epo.fif, smaller-epo-1.fif & smaller-epo-2.fif were in the directory and I called mne.read_epochs('smaller-epo.fif', preload=True). Then I followed your second idea, to only use the first two samples, i.e.
out_epochs = epochs[:2]
out_epochs.save('tiny-epo.fif', split_size='10MB')

And the first line produces this:
<Epochs |  2 events (all good), -0.1 - 0.7 sec, baseline [-0.1, -0.1], ~380 kB, data loaded, with metadata,
 'class1': 2>

When calling the save method on the object, it starts making those 590 MB files again. I stopped the process when it looked like it was going to repeat the other behaviour from before. I added in some print statements to visualise some of the variable values computed in the save method in epochs.py and can see that in the extreme case of only two events, when calling save, the following is returned
len(self) = 2
total_size = 606305574

epoch_idxs = [array([0]), array([1]), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32), array([], dtype=int32)]

So it looks like it wants to split the two events into this many different files, each one about 590 MB.
What that data is exactly, I'm not sure.

Okay can you upload those first two files anyway? I'll try to hack the MNE code not to look for the third, and see if I can replicate the issue.

Okay can you upload those first two files anyway? I'll try to hack the MNE code not to look for the third, and see if I can replicate the issue.

Sure thing. Here is a link.
It's smalller-epo.fif, smalller-epo-1.fif and smalller-epo-3.fif. The three L's confused me a bit, too, but it came from me copying over your instructions earlier :)
I hope it's a bit clearer to see what might be going on with these files downloadable now.

Okay @Alex159 it looks like:

epochs.drop_log gets written to every file
Your drop log had 100k+ entries (maybe 1m+), the vast majority of which were IGNORE for each write (the epochs that are not going into a specific file get set to IGNORE for that file)

This PR fixes this by:

Properly parsing sizes into those which get written to all split files (drop log, info, some FIF tag overhead) -- this should ensure that you actually get split_size-sized files or smaller.
Warning if the drop_log overhead is terrible
Providing a reset_drop_log_selection method that kill the drop_log and selection attributes.

Can you try your big concatenation / splitting / saving code with a reset_drop_log_selection put in before the save call? It should make the file sizes much more reasonable.

Hi @larsoner,
Thanks so much for this fix. I re-ran the same portion of the code that earlier gave rise to all of these problems and it all worked fine. I forgot to add in a manual call to reset_drop_log_selection before calling the save method and the file splitting worked, getting four ~ 2GB files with the following output:
Splitting into 4 parts

<ipython-input-5-af8b8b0fda9d>:1: RuntimeWarning: epochs.drop_log contains 46536100 entries which will incur up to a 576.9 MB writing overhead (per split file), consider using epochs.reset_drop_log_selection() prior to writing
  epochs_concat_reduced.save('test_10class_balanced-epo.fif', split_size='2GB')

I then added in the call to reset_drop_log_selection and attempted to save the data in the same way again and it worked. The saving process was so much quicker than I am accustomed to, this time around. The only thing now is that the size reported in the print call to the Epochs ~ 9.24 GB but only 3 files of 1.6 GB are now saved. Those (now 3) files don't seem to be the right size. Perhaps there is some compression going on somewhere. I will try to load the files again, call the __repr__ method on the Epochs and see what it says.
I can confirm it matches. So it does save all the data. I have to say, this fix at least on my data has dramatically increased the speed of loading and saving. I used to have time to go and make a cup of coffee between calling the load / save function and those operations actually completing. Now it happens in a fraction of the time.
Seriously, a huge thank you is in order! This is a very much appreciated fix.

getting four ~ 2GB files with the following output:
...which will incur up to a 576.9 MB writing overhead...

So ~8GB gets written to disk when the drop log and selection are there, but 4 x 576 MB = ~1.9 GB of this is drop log. So really it sounds like you have something like ~6 GB of data that should be written (?).

The only thing now is that the size reported in the print call to the Epochs ~ 9.24 GB but only 3 files of 1.6 GB are now saved. Those (now 3) files don't seem to be the right size.

That's so that's ~4.8 GB on disk. Keep in mind that the default format for save is single, i.e., 32-bit float gets written to disk. When you load into memory they are upconverted to 64-bit float, so this will double to ~9.6 GB. So they're not off by so much.
This ~4.8 GB of data is lower than the ~6 GB of data, but I'm probably forgetting to factor something in here. But as long as the I/O round-trips work I think we're good!

I have to say, this fix at least on my data has dramatically increased the speed of loading and saving. I used to have time to go and make a cup of coffee between calling the load / save function and those operations actually completing. Now it happens in a fraction of the time.

Please do let us know if there are other nasty bottlenecks like this in your code. Things shouldn't take this long :) (Unless of course you are doing some crazy dimensional statistical or machine learning task.)

When I originally said ~ 2GB, it was actually 1.85GB so making that correction it all seems to fall into place. I didn't know about the upconverted to float64, doubling the size of the data. That was the key piece of information that was missing. So, overall, expectation is more around ~ 5GB to be written, and we see 4.8GB so I think that it's close enough and probably true with some slight precision is off somewhere.

Please do let us know if there are other nasty bottlenecks like this in your code. Things shouldn't take this long :) (Unless of course you are doing some crazy dimensional statistical or machine learning task.)

I will definitely do that. I remember that MNE used to be really fast at loading / saving then about a year ago it became frustratingly slow, which is round about the time this data first got put all together and I haven't worked with other neural data in MNE since then. I thought it was a fault with the computer. Knowing what I know now, I can imagine all sorts of reasons that might cause bottlenecks and I'll be happier to raise an issue if I think something is wrong.
I'm sure this was just a patch waiting to happen at some point anyway and it's good now that those people in the future won't even bump into this error now that there's a solution. Lucky them :)

Splitting into two PRs


Bump target sdk version to 35

Issue

close #ISSUE_NUMBER

Overview (Required)

Title says it all.
The oss-licenses-plugin has disabled Edge-to-Edge because it cannot control insets padding.

Links

https://developer.android.com/about/versions/15/behavior-changes-all
https://developer.android.com/about/versions/15/behavior-changes-15

Screenshot (Optional if screenshot test is present or unrelated to UI)

Before
After

No difference
Movie (Optional)

Before
After

@NUmeroAndDev @takahirom
If you run Gradle Sync, you should be prompted to install it, but I thought it might be hard to notice, so I made an announcement on X (Twitter). 🙏
https://x.com/Todayama_R/status/1830674922382963112
I apologize if this is none of my business. 🙇


Fix passing on HTML/CSS options

Fixes #92

I wish there were still automated tests, so I wouldn't have to spend so much time hunting this down.

lgtm.

@yoshuawuyts you cool to merge this?

Closing in favor of #101

Thanks heaps for the patch by the way! :tada:


Typo "Azure function"→"Azure Function"

https://docs.microsoft.com/en-us/azure/azure-functions/functions-how-to-github-actions?tabs=dotnet

@hyoshioka0128 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

We're checking on how to proceed with the pull request. #hold-off

This commit has been moved to the private repo for merging. We'll close this pull request. Thanks.


Add lazy-motion package

This moves the previous ^S binding to cmd-i which fits better w/ ctrl-i. It also makes ctrl-s and ctrl-r act like they do in the terminal/emacs sorta.


github repo for low cost DIY SuzyQ equivalent

this is some simple hardware tested and working on a Lenovo GeminiLake based CR50 system
https://github.com/erichVK5/erichVK5-suzy-Q-cable-v1.git
Keep up the good work MrChromebox!!

This should be totally one he adds to the wiki, good effort Erich!

I just used this to make one... It was super easy.
https://www.amazon.com/dp/B0CVT9736T


No client override during migrate:make

During migrate:make client is set to 'sqlite3' only if client
is not setted in options and configuration.
Closes #5102

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

20 of 21 (95.24%)  changed or added relevant lines in 3 files are covered.
4 unchanged lines in 3 files lost coverage.
Overall coverage decreased (-0.03%) to 92.231%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

bin/cli.js
7
8
87.5%

Files with Coverage Reduction
New Missed Lines
%

bin/cli.js
1
67.43%

lib/migrations/migrate/MigrationGenerator.js
1
86.05%

test/cli/seed-make.spec.js
2
98.4%

Totals

Change from base Build<PHONE_NUMBER>:
-0.03%

Covered Lines:
19276

Relevant Lines:
20439

💛  - Coveralls

Tests are failing.

(by the way we can see that coveralls comments works :D. I switch for detailed to short comments)

@kibertoad this PR and release 1.0.6 did not fix the problem.
At a glance, I believe the reason that the new test in this PR did not catch the problem is because, unlike many Knex users' projects, the Knex repo itself does have @vscode/sqlite3 installed. So you'll never get the "cannot find module" error, because Node can find it.
Ideally, the testing infrastructure would scaffold a new temporary directory with its own package.json (etc) in /tmp for each test or at least each suite, to more easily reproduce a true user experience.


Add FEC Check

SRGDS-23

Love it. Any plan to push this up to the AMMOS repo?

Not anytime soon, and especially not before we decide what to do when we fail the check.


Bug: Failed to start HTTP/2 stream on opensource reminder job

Suggestion: We should add some trace logs or debug (we can decide the level later) to have more information on this function, where I think this issue is.

Good idea 👍

We could install some monitoring service like sentry, i think it will make finding bugs easier.

I haven't used Sentry before. Does that make it more complicated for people to develop with? I am thinking of removing Firestore for this reason

@eddiejaoude so would EddieBot not write to the DB, like those rules or subscriptions?

It would write to another DB that people people could have locally during development like Mongo, but then we don't have the realtime DB for the web / mobile that we are keen to have - I am still thinking about it, I am just keen to keep it simple for people to get involved

@eddiejaoude gotcha, indeed using MongoDB would make the setup process for new contributors faster and simpler 👍. But now that you mention the realtime DB for EddieBotUI, could we perhaps use Mongo's change streams to achieve the same as Firebase Firestore?
I never tried it 😅 so I don't know if it's the same as Firestore's features. So far I've encountered this blog post to learn more about other solutions.
Imo, dropping the realtime feature in favor of simpler development (which can lead to more people getting involved) is a good call 😃. Ideally, we would design EddieBot and EddieBotUI where the data access layer is abstracted so that in the future, changing the implementation to support realtime is easier.

Great points @BOLT04 . To add 1 more to that list of benefits, automated testing is much easier with Mongo too, Firestore is weird - it now has an emulator but I still feel they have not thought of the testing or open source side of projects, more just for 1 person quick prototypes.
I haven't used Mongo's streams, so I would need to take a look too

Also I forgot about something @eddiejaoude. Would we migrate the data from firebase to Mongo, or just start fresh?

I would like to migrate the data, but it too much hassles we might need to start again - it depends which DB we go to
I heard about an open source alternative to Firebase which works with Postgres http://supabase.io - I didnt look into it yet.

Here is an update on this issue after the added trace logs:

@eddiejaoude maybe we can close this issue, what do you think? If it reappears or someone can reproduce it, we open it again.

Good idea @BOLT04 👍 . I am happy to keep the debugging in for the moment too


fix CommonMetadataOwner issue: german umlauts are displayed encoded

simple fix to display german umlauts user name correctly (e. g. ü instead of ü)

Hi @dpomt, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by .NET Foundation and real humans are currently evaluating your PR.
TTYL, DNFBOT;

This file doesn't exist anymore in 1.10, and the issue is fixed for me. If you want to fix it locally you can just render the user name property.


sync to live

OPS Build status updates of commit ff9d5c8:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

windows-iotcore/Downloads.md
:white_check_mark:Succeeded

windows-iotcore/Glossary.md
:white_check_mark:Succeeded

windows-iotcore/TOC.md
:white_check_mark:Succeeded

windows-iotcore/Troubleshooting.md
:white_check_mark:Succeeded

windows-iotcore/archive/AllJoyn.md
:white_check_mark:Succeeded

windows-iotcore/archive/AllJoynCodeGen.md
:white_check_mark:Succeeded

windows-iotcore/archive/AllJoynDSB.md
:white_check_mark:Succeeded

windows-iotcore/archive/AllJoynDSBAPIGuide.md
:white_check_mark:Succeeded

windows-iotcore/archive/AllJoynProducer.md
:white_check_mark:Succeeded

windows-iotcore/archive/AllJoynStudio.md
:white_check_mark:Succeeded

windows-iotcore/archive/AllJoynTroubleshooting.md
:white_check_mark:Succeeded

windows-iotcore/archive/CreateIoTCorePro.md
:white_check_mark:Succeeded

windows-iotcore/archive/WVSA.md
:white_check_mark:Succeeded

windows-iotcore/archive/hack-the-home
:white_check_mark:Succeeded

windows-iotcore/connect-your-device/Bluetooth.md
:white_check_mark:Succeeded

windows-iotcore/connect-your-device/DISM.md
:white_check_mark:Succeeded

windows-iotcore/connect-your-device/InternetConnectionSharing.md
:white_check_mark:Succeeded

windows-iotcore/connect-your-device/InternetConnectionSharingNov2015.md
:white_check_mark:Succeeded

windows-iotcore/connect-your-device/Miracast.md
:white_check_mark:Succeeded

windows-iotcore/connect-your-device/PowerShell.md
:white_check_mark:Succeeded

windows-iotcore/connect-your-device/SSH.md
:white_check_mark:Succeeded

windows-iotcore/connect-your-device/SetupWifi.md
:white_check_mark:Succeeded

windows-iotcore/connect-your-device/SetupWifiDirect.md
:white_check_mark:Succeeded

windows-iotcore/connect-your-device/VPN.md
:white_check_mark:Succeeded

windows-iotcore/develop-your-app/AppDeployment.md
:white_check_mark:Succeeded

windows-iotcore/develop-your-app/InvestigateMemoryLeaks.md
:white_check_mark:Succeeded

windows-iotcore/develop-your-app/Loopback.md
:white_check_mark:Succeeded

windows-iotcore/develop-your-app/RemoteDebugging.md
:white_check_mark:Succeeded

windows-iotcore/develop-your-app/SetupDefaultApp.md
:white_check_mark:Succeeded

windows-iotcore/extend-your-app/ComputerVision.md
:white_check_mark:Succeeded

windows-iotcore/extend-your-app/Speech.md
:white_check_mark:Succeeded

windows-iotcore/learn-about-hardware/HeadlessMode.md
:white_check_mark:Succeeded

windows-iotcore/learn-about-hardware/SoCsAndCustomBoards.md
:white_check_mark:Succeeded

windows-iotcore/learn-about-hardware/iotnxp.md
:white_check_mark:Succeeded

windows-iotcore/manage-your-device/CommandLineUtils.md
:white_check_mark:Succeeded

windows-iotcore/manage-your-device/DevicePortal.md
:white_check_mark:Succeeded

windows-iotcore/manage-your-device/WindowsDebugger.md
:white_check_mark:Succeeded

windows-iotcore/media/Troubleshooting/adapters.png
:white_check_mark:Succeeded

windows-iotcore/media/Troubleshooting/txrx.png
:white_check_mark:Succeeded

windows-iotcore/release-notes/CurrentCommercial.md
:white_check_mark:Succeeded

windows-iotcore/release-notes/CurrentInsider.md
:white_check_mark:Succeeded

windows-iotcore/release-notes/Insider/16257.md
:white_check_mark:Succeeded

windows-iotcore/release-notes/Insider/16267.md
:white_check_mark:Succeeded

windows-iotcore/release-notes/Insider/17015.md
:white_check_mark:Succeeded

windows-iotcore/release-notes/Insider/17083.md
:white_check_mark:Succeeded

windows-iotcore/release-notes/Insider/17110.md
:white_check_mark:Succeeded

windows-iotcore/release-notes/Insider/17661.md
:white_check_mark:Succeeded

windows-iotcore/release-notes/Insider/17672.md
:white_check_mark:Succeeded

windows-iotcore/release-notes/Insider/17686.md
:white_check_mark:Succeeded

windows-iotcore/release-notes/Insider/17692.md
:white_check_mark:Succeeded

This comment lists only the first 50 files in the pull request.
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Incorrect instructions on DNX page

At the bottom of this page
https://github.com/aspnet/Home/wiki/DNX-utility
it reads
"...Use "dnu help [command]" for more..."
it should read
"Use "dnu [command] --help" for more"

This issue is being closed because it has not been updated in 3 months.
We apologize if this causes any inconvenience. We ask that if you are still encountering this issue, please log a new issue with updated information and we will investigate.


update BSK (duck player fixes)

Task/Issue URL:
Tech Design URL:
CC:
Description:

Steps to test this PR:
1.
2.

Copy Testing:

[ ] Use of correct apostrophes in new copy, ie ’ rather than '

Orientation Testing:

[ ] Portrait
[ ] Landscape

Device Testing:

[ ] iPhone SE (1st Gen)
[ ] iPhone 8
[ ] iPhone X
[ ] iPhone 14 Pro
[ ] iPad

OS Testing:

[ ] iOS 14
[ ] iOS 15
[ ] iOS 16

Theme Testing:

[ ] Light theme
[ ] Dark theme

Internal references:
Software Engineering Expectations
Technical Design Template

Current dependencies on/for this PR:

develop

PR #1801   👈

This comment was auto-generated by Graphite.


File not found error from Make run on debian

Hello, I tried to run the server using "make run" on Debian and I was getting file not found errors from the docker run command.  It turns out that it was related to carriage return (\r) characters in the Dockerfile as described here: http://stackoverflow.com/questions/26842629/docker-cannot-start-container-no-such-file-or-directory.  I ran dos2unix command on Dockerfile and rebuilt and the problem is resolved.  dos2unix command replaces \r\n with \n.  Would you like me to submit a pull request for this?
Thanks.

Good catch, a PR would be great but I can do it if you don't have time.

This should be fixed, let me know if you run into more issues.


Change default tag added the imgpkg

Describe the problem/challenge you have
As a Registry Operator
I want to be able to create an easy and predictable replication rule
So that I can replicate imgpkg Bundles between registries
Today imgpkg when copies a Bundle between registries, adds 1 tag to each image. That tag is built using the following formula imgpkg-{Algorithm}-{Image SHA}.
Nevertheless, we expect in the near future a need to add other OCI Images to the registry in order to keep more metadata about the Bundle (ex: #136). This might complicate a little the pattern that we initially decided to use.
Describe the solution you'd like
We propose a change in the tag formula to be {Algorithm}-{Image SHA}.imgpkg, this way the Registry Operators can create a rule that would look something like Tag=*.imgpkg.

Vote on this request
This is an invitation to the community to vote on issues, to help us prioritize our backlog. Use the "smiley face" up to the right of this comment to vote.
👍 "I would like to see this addressed as soon as possible"
👎 "There are other more important things to focus on right now"
We are also happy to receive and review Pull Requests if you want to help to work on this issue.

Released in version 0.8.0


Resolving .elf Script Naming Conflicts for CDN Deployment

Naming .elf scripts based on source paths leads to conflicts when serialized into scenes and stored on a CDN. Changes in path due to CDN storage alter the script's global name, breaking code references.
Discussion Points:

Current Naming Convention: Ties .elf script names to their source file paths, causing issues when paths change.
Proposed Solution: Append a UUID to folder names to prevent conflicts (e.g., res://some-uuid-long-form/player.elf).
Alternative Suggestions:

Use human-readable random words like "angry-horse" for better intuitiveness.
Limit name length to three words to avoid verbosity.

Tools and Libraries:

guid-in-words: Converts GUIDs to words; concerns about name length exist.

Concerns:

Need a renaming mechanism that doesn't affect compilation.
Require a method to generate unique, concise names for usability and conflict prevention.

@export var player_elf : Sandbox works but lacks autocomplete.

I think we can close this now that we can just load arbitrary programs directly into the Sandboxes without needing any ELF scripts at all


Any plans to add AJAX support to the grid?

I love the grid, but I need to be able to load data via AJAX calls, and also to feed data to the grid from JSON data returned from a web service. Are there any plans to support scenarios like this? Thanks.

Not really. If I want AJAX functionality I will generally throw in a library like jQuery data tables or similar.  More than happy to receive pull requests though, but given there are so many options out there I'd be hesitant to lock this (rather general) library into something specific.
I believe there are other .NET libraries for grids that include AJAX support ootb (although when I've looked at those libraries they have been pretty complex so I've stayed away preferring to wire in the JavaScript library myself.

Wait, are you saying that I could hook up jQuery data tables to the table generated by the MVC grid? That would be ideal, actually, but I wasn't sure how the data tables chrome (pager, search bar, etc) would interact with the chrome generated by the grid. Also, the MVC grid wants a model that's a list of objects, whereas I don't have such a list in the scenario where I want to send the grid empty and have it populate via AJAX.
Would you happen to have an example or code sample of how to do this?
On 1/28/2015 6:07 PM, Rob Moore wrote:

Not really. If I want AJAX functionality I will generally throw in a library like jQuery data tables or similar. More than happy to receive pull requests though, but given there are so many options out there I'd be hesitant to lock this (rather general) library into something specific.
I believe there are other .NET libraries for grids that include AJAX support ootb (although when I've looked at those libraries they have been pretty complex so I've stayed away preferring to wire in the JavaScript library myself.
—
Reply to this email directly or view it on GitHub https://github.com/MRCollective/AspNet.Mvc.Grid/issues/2#issuecomment-71936251.

Yep, it's pretty easy. Just give the table an id attribute using the Mvc Grid library (or some other way to identify it) and then target it with jquery as you would if you hand rolled the table html.
If you want an empty grid it's pretty easy:
@Html.Grid(Enumerable.Empty<MyType>()).Columns(...)...

This is very helpful, thanks! Giving it a try now.
On 1/28/2015 9:52 PM, Rob Moore wrote:

Yep, it's pretty easy. Just give the table an id attribute using the Mvc Grid library (or some other way to identify it) and then target it with jquery as you would if you hand rolled the table html.
If you want an empty grid it's pretty easy:
@Html.Grid(Enumerable.Empty()).Columns(...)...
—
Reply to this email directly or view it on GitHub https://github.com/MRCollective/AspNet.Mvc.Grid/issues/2#issuecomment-71960380.

This didn't actually work. When I specify an empty model list, the grid doesn't write the header row columns, and this seems to break datatables; it just says "Processing..." and never calls my REST endpoint to get the data. I think datatables needs the header to be there even if there's no data. Is there a way to get the grid to write that header?
On 1/28/2015 9:52 PM, Rob Moore wrote:

Yep, it's pretty easy. Just give the table an id attribute using the Mvc Grid library (or some other way to identify it) and then target it with jquery as you would if you hand rolled the table html.
If you want an empty grid it's pretty easy:
@Html.Grid(Enumerable.Empty()).Columns(...)...
—
Reply to this email directly or view it on GitHub https://github.com/MRCollective/AspNet.Mvc.Grid/issues/2#issuecomment-71960380.

Hmm, actually yeah - looking at the code it doesn't render the headers if the data source is empty because instead it displays a message.
If you want to add in an option to allow someone to override it to display headers when it's empty for this sort of scenario I'm happy to get it merged in and to help where I can. Too busy at the moment to write it myself I'm afraid. If you think that would be useful then maybe start by raising a separate issue so it can be tracked.
Alternatively, the workaround for the moment would be to have a single item in your model. Presumably jquery data tables will override it anyway based on it's ajax requests? When we've used it in the past we actually put the full table of data in and just used the pagination and sorting functionality inline since there was only a couple of hundred records (hence why I didn't realise the problem with empty data source).

It does seem to work to add a dummy record, so I'll do that for now. I'd love to be able to contribute the fix, but I'm not sure I would know where to begin.
On 1/29/2015 10:40 AM, Rob Moore wrote:

Hmm, actually yeah - looking at the code it doesn't render the headers if the data source is empty because instead it displays a message.
If you want to add in an option to allow someone to override it to display headers when it's empty for this sort of scenario I'm happy to get it merged in and to help where I can. Too busy at the moment to write it myself I'm afraid. If you think that would be useful then maybe start by raising a separate issue so it can be tracked.
Alternatively, the workaround for the moment would be to have a single item in your model. Presumably jquery data tables will override it anyway based on it's ajax requests? When we've used it in the past we actually put the full table of data in and just used the pagination and sorting functionality inline since there was only a couple of hundred records (hence why I didn't realise the problem with empty data source).
—
Reply to this email directly or view it on GitHub https://github.com/MRCollective/AspNet.Mvc.Grid/issues/2#issuecomment-72045754.

Ugh, I spoke a little too soon. When I add a dummy row, that row is visible for the length of time it takes for the AJAX request to return, and that doesn't look good. I wonder what the cleanest way around this would be.
On 1/29/2015 10:40 AM, Rob Moore wrote:

Hmm, actually yeah - looking at the code it doesn't render the headers if the data source is empty because instead it displays a message.
If you want to add in an option to allow someone to override it to display headers when it's empty for this sort of scenario I'm happy to get it merged in and to help where I can. Too busy at the moment to write it myself I'm afraid. If you think that would be useful then maybe start by raising a separate issue so it can be tracked.
Alternatively, the workaround for the moment would be to have a single item in your model. Presumably jquery data tables will override it anyway based on it's ajax requests? When we've used it in the past we actually put the full table of data in and just used the pagination and sorting functionality inline since there was only a couple of hundred records (hence why I didn't realise the problem with empty data source).
—
Reply to this email directly or view it on GitHub https://github.com/MRCollective/AspNet.Mvc.Grid/issues/2#issuecomment-72045754.

You could put a snippet of JavaScript directly after the table that deletes that row?


Issue #6371 - fix accordion mixin when using custom class names

This fixes #6371. Since the docs show that you can create an accordion mixin with custom class names, the JavaScript shouldn't hard code .accordion-navigation in the selectors.

Sweet, thanks!


Issue of unregister receiver on calling session.disconnect method

I have successfully integrated the opentok sdk for basic video chat and I m facing the below issue when I disconnect the session after the chat has been over between the two persons. Please find the stacktrace of the same.
07-22 17:41:21.649 9369-9369/E/ActivityThread: Service .services.FloatingChatService has leaked IntentReceiver com.opentok.android.Session$19@2f58ab5 that was originally registered here. Are you missing a call to unregisterReceiver()?                                                                         android.app.IntentReceiverLeaked: Service .services.FloatingChatService has leaked IntentReceiver com.opentok.android.Session$19@2f58ab5 that was originally registered here. Are you missing a call to unregisterReceiver()?                                                                             at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:1159)                                                                             at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:946)                                                                             at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1302)                                                                             at android.app.ContextImpl.registerReceiver(ContextImpl.java:1282)                                                                             at android.app.ContextImpl.registerReceiver(ContextImpl.java:1276)                                                                             at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:586)                                                                             at com.opentok.android.Session.registerLoggingEventsReceiver(Session.java:1963)                                                                             at com.opentok.android.Session.enableLoggingEventsReceiver(Session.java:1952)                                                                             at com.opentok.android.Session.onConnected(Session.java:1296)                                                                             at com.opentok.android.Session$2.run(Session.java:1283)                                                                             at android.os.Handler.handleCallback(Handler.java:751)                                                                             at android.os.Handler.dispatchMessage(Handler.java:95)                                                                             at android.os.Looper.loop(Looper.java:154)                                                                             at android.app.ActivityThread.main(ActivityThread.java:6119)                                                                             at java.lang.reflect.Method.invoke(Native Method)                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Hi @Faiyyaz,
I am not able to reproduce this in our sample apps when I disconnect the session. Could you reproduce it?
If you have registered a receiver in the activity, its important that you unregister it on onPause.

I’m closing this issue because it has been inactive for a few weeks. This probably means that it is not reproducible or it has been fixed.
Please reopen if you still encounter this issue You can also contribute directly to samples by providing a patch.
Thank you!

You should call Session.onResume and Session.onPause from your activity to prevent this exception.

I have use that method but then also the issue arises


feat: umami session data support

refs:

https://umami.is/docs/tracker-functions#session-data
https://umami.is/docs/sessions
https://github.com/umami-software/umami/discussions/2934

@jaseeey would love a review on this as well, no rush :)

@jaseeey would love a review on this as well, no rush :)

Yep, no problems, I will get to this one soon too and group the changes in the same version.


reduce source wait time for archive queries

A possible reason we hit #1997 was that we were waiting a longer than expected time for a source to be created and pushed onto the source channel in spanMultiSource.SendSources, due the time needed to perform the tsDir walking operation. That involves performing list operations against S3 and reading chunk metadata files to create the list of files to read for a query. We already have caching work in progress that will help with the chunk metadata file access, and we have plans to work on caching the directory lookup operations as well.
This issue tracks two additional ways we can reduce the wait time:

we can use channel buffering or some similar technique to generate the sources ahead of time, before a worker needs to wait on the source channel. I think that just adding a buffer capacity to the chan Source is not sufficient, since a Source is a single file in a tsDir, and I think we should try to 'readahead' an entire tsDir's worth of Chunks.
We should also be able to parallelize most of the work in tsDirVisit, most easily the part that reads the metadata files to create the Chunk structs, and with a little more care the reading of the tsDir entries, given the ordering guarantee.

I added the buffering I mentioned above in #2019, and am handing over to @mattnibs to handle the tsDirVisit parallelization.

I added the buffering I mentioned above in #2019, and am handing over to @mattnibs to handle the tsDirVisit parallelization.

Verified in zar commit 1ac7787f.
As described in the linked PR, a decent test data set is the oft-cited "corelight" data set, which is first imported from my laptop into an archive on S3.
$ zq * | zar import -R s3://phil-scratch-us-east-2/archive -s 25MB -

Going back to zq commit 10c789a2 that comes right before the changes in the linked PR, we see it consistently takes 11+ seconds to complete a zar stat of the archive.
$ zar -version
Version: v0.29.0-53-g10c789a2

$ time zar stat -R s3://phil-scratch-us-east-2/archive > /dev/null
real	0m11.415s
user	0m0.454s
sys	0m0.312s

$ time zar stat -R s3://phil-scratch-us-east-2/archive > /dev/null
real	0m11.640s
user	0m0.363s
sys	0m0.244s

$ time zar stat -R s3://phil-scratch-us-east-2/archive > /dev/null
real	0m11.712s
user	0m0.377s
sys	0m0.240s

But at zar commit 1ac7787f, the same operation is more than 2x faster.
$ zar -version
Version: v0.29.0-59-g1ac7787f

$ time zar stat -R s3://phil-scratch-us-east-2/archive > /dev/null
real	0m4.942s
user	0m0.426s
sys	0m0.212s

$ time zar stat -R s3://phil-scratch-us-east-2/archive > /dev/null
real	0m4.638s
user	0m0.507s
sys	0m0.288s

$ time zar stat -R s3://phil-scratch-us-east-2/archive > /dev/null
real	0m4.652s
user	0m0.522s
sys	0m0.298s

Thanks @mattnibs!


Migrate article: 2021-12-10 log4j2 vulnerability and Aiven services #…

…1063
Fix #1063
What changed, and why it matters

Can you add a bit more wording in the PR description. Also please note my change in the comment: adding
Fix #IssueNumber

Will make the issue being closed on merging the PR. otherwise it will not.

Thanks @sluhur , we have now a blog post covering this, it's not needed in devportal


cert-manager-cainjector is looking for ca secret in wrong namespace?

cert-manager-cainjector is looking for the secret in the wrong namespace. I'm using argo w/kustomize to deploy the helm chart/crds and a ClusterIssuer and it seems to have resulted in a weird situation. All the cert manager resources were successfully deployed in the utilities namespace including the webhook cert. However when trying to deploy the ClusterIssuer as part of the same deployment, it fails with an invalid x509 cert on the webhook. Looking at the injector logs, its looking for the cert in the argocd namespace even though everything is deployed via the utilities namespace.
cert-manager-cainjector logs:
I0604 04:18:42.865521       1 controller.go:220] "Starting workers" logger="cert-manager" controller="validatingwebhookconfiguration" controllerGroup="admissionregistration.k8s.io" controllerKind="ValidatingWebhookConfiguration" worker count=1
E0604 04:18:42.865728       1 sources.go:176] "unable to fetch associated secret" err="Secret \"certi-manager-cert-manager-webhook-ca\" not found" logger="cert-manager" kind="validatingwebhookconfiguration" kind="validatingwebhookconfiguration" name="certi-manager-cert-manager-webhook" secret="argocd/certi-manager-cert-manager-webhook-ca"
I0604 04:18:42.865783       1 reconciler.go:118] "could not find any ca data in data source for target" logger="cert-manager" kind="validatingwebhookconfiguration" kind="validatingwebhookconfiguration" name="certi-manager-cert-manager-webhook"

Argo yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: utilities
resources:
  - "acme-issuer.yaml"
helmCharts:
- name: cert-manager
  repo: https://charts.jetstack.io
  version: "1.14.5"
  releaseName: certi-manager
  valuesFile: values.yaml
---
# values.yaml
global:
  leaderElection:
    namespace: "utilities"
installCRDs: true
crds:
  enabled: true
  keep: false
enableCertificateOwnerRef: true
---
# acme-issuer.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: acme-issuer
  namespace: utilities
  annotations:
    argocd.argoproj.io/sync-wave: "2"
...
---
# argoapp.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  generation: 28
  name: cert-manager
  namespace: argocd
  ...
spec:
  destination:
    namespace: utilities
    server: 'https://kubernetes.default.svc'
 ...

kubectl get pods --namespace utilities
NAME                                                    READY   STATUS    RESTARTS   AGE
certi-manager-cert-manager-7688b74dd-dzdhg              1/1     Running   0          15m
certi-manager-cert-manager-cainjector-c5d7df794-fvwgb   1/1     Running   0          15m
certi-manager-cert-manager-webhook-794749bdf7-g8668     1/1     Running   0          15m
kubectl get secrets -n utilities
NAME                                    TYPE     DATA   AGE
certi-manager-cert-manager-webhook-ca   Opaque   3      17m

Thanks for the reply! Rebuilding the cluster with no changes worked, I'm not sure what artifact was laying around to cause that, was likely from an earlier deploy attempt. I went through and deleted everything or so I thought.
RE: namespace, I think the namespace at the top of the kustomization file filters down right? it was for everything else as all the other resources ended up in the correct namespace.


Rikolti versioning

This PR introduces the rikolti.utils.storage and rikolti.utils.versions modules.
rikolti.utils.storage is a module implementing list, get, and put operations for s3:// or file:// URIs. Currently, it implements the following functions, where a data_uri is always a URI formatted absolute path to a storage location and kwargs are always passed along to the underlying boto3 call and can be used to add AWS credentials:

list_dirs(data_uri: str, recursive=False, **kwargs): returns a list of all directories that are the immediate child of data_uri - at this time, there is no recursive implementation. Returns relative paths - it's the only function in this module that does not deal in absolute paths, and it might be worth changing it for consistency, even though it's usage does not require absolute paths.
list_pages(data_uri: str, recursive: bool=True, **kwargs): lists all files that are the child of data_uri; can recursively traverse a directory tree or return only direct children. Returns a list of URI-formatted absolute paths.
get_page_content(data_uri: str, **kwargs): returns the contents of the file stored at data_uri.
put_page_content(content:str, data_uri: str, **kwargs): writes content to a file located at data_uri, creates any subdirectories required to successfully write to the location described by data_uri, returns data_uri.
upload_file(filepath:str, data_uri: str, **kwargs): moves the file located at filepath to data_uri, creates any subdirectories required to successfully write to the location described by data_uri, returns data_uri.

The storage module deals exclusively in absolute path URI values, while rikolti.utils.versions deals primarily in "version paths" and "version pages", If s3://bucket-name/3433/vernacular_data_v1/data/page1.xml is the URI to the first page of vernacular data, then 3433/vernacular_data_v1/ is the "version" or "version path" and 3433/vernacular_data_v1/data/page1.xml is the "version page". A version path always starts with the collection id. rikolti.utils.versions implements the creation of new version paths given an existing version path, a method to find a version path in an arbitrary string - usually an absolute path URI:

get_version(collection_id: Union[int, str], uri: str): takes an arbitrary string (usually a URI) and tries to find a version path by splitting on the collection id and discarding everything prior to the collection ID and also discarding everything after the special data keyword. returns a version path.
create_version(base_version: str, pipeline_step: str, suffix: Optional[str] = None): takes a version path such as "3433/" or "3433/vernacular_metadata_v1", a pipeline step such as "vernacular_metadata" or "mapped_metadata", and a suffix, such as "v2", and produces a new version: "3433/vernacular_metadata_v2/" or "3433/vernacular_metadata_v1/mapped_metadata_v2". If no suffix is provided, uses the current datetime.
create_vernacular_version, create_mapped_version, create_validation_version, and create_content_data_version all call create_version while enforcing a particular name for the pipeline step. create_vernacular_version takes a collection ID, rather than a base version path, and constructs the base version path <collection_id>/. Since there is always only 1 data file per validation version, create_validation_version does not return a version path but instead a versioned csv name: <mapped_metadata_version_path>/validation_<version suffix>.csv

rikolti.utils.versions also implements a variety of functions to resolve a version path to an absolute URI for usage with the storage module, using environment variables to specify the particular rikolti data root:

get_most_recent_vernacular_version(collection_id: Union[int, str]) sorts the contents of $VERNACULAR_DATA/<collection_id>/, and returns the version path of the first item - this presumes a sortable vernacular version suffix. Currently, datetime is used as the version suffix.
get_pages(version: str, pipeline_step: str) resolves a "vernacular" pipeline step version path to $VERNACULAR_DATA/<version path>/ or a "mapped" pipeline step version path to $MAPPED_DATA/<version path>/ and returns a list of version pages. get_vernacular_pages and get_mapped_pages just make sure the pipeline step is set correctly.
get_child_directories(version, **kwargs) resolves a mapped version path to $MAPPED_DATA/<version path>/data/ and returns a list of directories in a given version's data folder. This is really only used to check if there is a "children" folder inside "data", so it could actually return a boolean and may be could be renamed, but I don't know what to call the resulting function. I anticipate having to revisit how versioning handles child records a bit when we revisit the Nuxeo fetcher/mapper pair (which is the only data source we support complex objects for).
get_child_pages resolves a version path to $MAPPED_DATA/<version path>/data/children/ and returns a list of version pages.
get_vernacular_page(version_page) resolves a vernacular version page to $VERNACULAR_DATA/<version page> and returns the contents of that page
get_mapped_page(version_page) resolves a mapped version page to $MAPPED_DATA/<version page> and returns the json-loaded contents of that page
put_page(content: str, page_name: Union[int, str], version: str, pipeline_step: str): resolves a version path to a page URI: <data_root>/<version path>/data/<page_name> and puts contents at that URI, where <data_root> is determined by pipeline_step to either $VERNACULAR_DATA, $MAPPED_DATA, or $CONTENT_DATA/
put_validation_report(content, version_page): resolves a version page to a URI: $MAPPED_DATA/<data_root>/<version page> and puts contents at that URI (there is no differentiation between a validation report's version path and a validation report's version page, since there is only ever one page per validation version).

Questions:

"pipeline step" strikes me as a bit of a weak abstraction within the versions module. I can imagine turning it into an Enum to make it a bit of a stronger abstraction, or de-drying the code a bit and just having separate list, put, and get functions for the different pipeline steps (see: https://github.com/ucldc/rikolti/pull/628/commits/4ed1e52876d2e8cbabf8e7f601b4be75e8656e09)
I'm handling validation reports in a slightly unique way, I think this is OK and makes sense, but want to double check with you all.
version suffixes: we had discussed using dag run id, but this actually stays static even while we re-run task attempts. we could use dag run id and task attempt number. but if we wind up running this outside of the airflow context but writing to the s3 bucket, then sorting and determining the "most recent version" for example, is sorting over multiple version suffix namespaces. this PR currently just uses datetime as version suffix, but does provide a hook to provide a specified suffix.
partial-pipeline DAGs and getting the "most recent version" (or other sensible version?) vs. requiring our users to know and specify as a parameter a version path. In exactly once case here, I've implemented the "get most recent vernacular version" function which tries to understand the most recent vernacular version to pass into the partial-pipeline mapper DAG if no version path is supplied. This seems kind of bad, though, like there's lots of ways we could make some wrong assumptions about which version is most "sensible" to assume. Making our users understand how to get the version path for a partial-pipeline DAG simultaneously seems like a pretty big ask without really making version paths a regularly labeled and discussed part of the system.

Some side-effects of this PR:

removed FETCHER_DATA_DEST, MAPPER_DATA_SRC, MAPPER_DATA_DEST, CONTENT_DATA_SRC, CONTENT_DATA_DEST, and CONTENT_DEST environment variables
added VERNACULAR_DATA, MAPPED_DATA, CONTENT_DATA, CONTENT_ROOT environment variables (where CONTENT_ROOT is the root for content files, while CONTENT_DATA is the root for metadata record files).
breaks the ability to run python -m <component>/<module>.py, because we can't import above the top level to get the utilities module.
required updates to the entrypoints and return values throughout the system in order to pass a particular vernacular data version as input to the mapper. previously the system just "knew" where to find vernacular data, so no parameter was necessary. even if we were still able to run from the command line, we would have to pass specific version paths as input to the command.
metadata_mapper.UCLDCWriter class is obsolete - it handled differences between writing to local vs. writing to s3 within the context of the metadata mapper in a specific way. Now that code has been generalized into the version system for mapper specific context and the storage system.
Much of the metadata_mapper.Vernacular class is obsolete - it handled differences between reading from local vs. reading from s3 within the context of the metadata mapper. It also handles parsing the read file, though, so the parsing part is still relevant.
Several of the tests.py files became challenging to contend with, due to the fact that they had certain expectations for where source files lived. These tests are outdated and not properly instrumented tests, though. In some cases I removed them entirely.
Most of Tim's metadata_mapper.utilities module is obsolete - it handled differences between writing and reading from local vs. s3 within the context of the validator.
validate_registry_collections.py module became challenging to contend with, but it hadn't been updated since my prototyped validator from ages ago - it had never even been updated to work with Tim's validator, so I just removed it.
had to add "create version" tasks prior to each dynamic pipeline step within the DAGs - for a pipeline step that functions for an entire collection, "create version" can happen within the python code prior to running the pipeline step. For a pipeline step that functions for a single page within a collection, "create version" has to happen /before/ the pipeline step so that we don't create a separate version (with a unique timestamp) for each page. We could maybe get around this if we used the dag run ID as the version suffix, but then we probably also want to use the task attempt number as well so that we can create new versions for each task attempt.

Next Steps:

as soon as this is put into place, we'll suddenly have a ton of data. I'm brainstorming ideas on how to moderate that. I think a "pin version" dag might be in order? It would somehow "pin" a specific version path (and all "data" folders down the version path) while deleting all the other versions. I can imagine multiple versions one might want to "pin" for a given collection (published version, version on -test, a known bad version that we're working to improve against), so I'm not sure if "pinning" is persistent and part of the versioning system (we move the directories into a different, "pinned" location? we suffix or prefix the directories with some special keyword?) or maybe the "pin version" dag takes a list of versions and just deletes everything else, and it's up to the user to keep track of what they want to keep and what they want to delete.
a "download version path" DAG that takes a given version path and zips up that version path while ignoring sibling version paths.

Whew. Thanks for making it this far. Here's a cute hamster: https://www.instagram.com/reel/CzORAdxpk1o/?igshid=MzRlODBiNWFlZA==

Comments on your questions above:
"pipeline step" strikes me as a bit of a weak abstraction
Hrm yeah, there's already the bug I ran into with get_vernacular_pages using "vernacular_metadata" while get_pages uses "vernacular" as the pipeline step. I'm OK with both of your proposed changes: either (1) turning pipeline_step into an enum or (2) just having separate list, put and get functions for the different pipeline steps. My instinct is that the latter would be simpler to use and maybe more readable?
I'm handling validation reports in a slightly unique way, I think this is OK and makes sense, but want to double check with you all.
Seems fine to me!
version suffixes
On this topic, I've been thinking about index names. If we name the index after the corresponding content version, it'd be something unwieldy like this:
27305/vernacular_metadata_2023-11-17T22:11:50/mapped_metadata_2023-11-17T22:12:00/content_data_2023-11-17T22:12:42
Actually it would need to be something like this), because capital letters and forward slashes are disallowed:
27305::vernacular_metadata_2023-11-17T22:11:50::mapped_metadata_2023-11-17-22:12:00::content_data_2023-11-17-22:12:42
I'm in the process of trying to think of an elegant solution, but maybe a brainstorming session with you, me and @bibliotechy is in order.
partial-pipeline DAGs and getting the "most recent version" (or other sensible version?) vs. requiring our users to know and specify as a parameter a version path
Yeah, I see what you mean and don't have an elegant solution off the top of my head right now either. Am thinking on it...

partial-pipeline DAGs and getting the "most recent version" (or other sensible version?) vs. requiring our users to know and specify as a parameter a version path

I feel like the use case for the partial pipeline dags is for testing and troubleshooting fetching or mapping or indexing without having to recreate all of the previous steps. Is that a correct assumption? Or do we expect the partial dags to be used for actual getting to data to production processes?
If we expect to use them only for testing, then I think it is reasonable to expect the use to provide a path. Maybe, if a path is not provided, the task can get a list of recent paths and suggest options?


Remove add subscription ID box #6663

Summary

#6663

Ensure that the 'Get Support' box is only shown when commercial support is enabled
Hide the button and text to add a subscription ID

#6665

Areas or cases that should be tested
There should be a request to rancher with following endpoint
/rancherversion and should receive a response {"Version":"b3c5e9f37","GitCommit":"b3c5e9f37","RancherPrime":"false"}
1. Rancher community
{"Version":"b3c5e9f37","GitCommit":"b3c5e9f37","RancherPrime":"false"}

Create Rancher with Rancher Prime enabled
Left hand navigation > Get Support (at the bottom)
User should not see "Get Support" box
User should see commercial links
Subscription ID box and 2 links shouldn't exist

2. Rancher Prime
{"Version":"b3c5e9f37","GitCommit":"b3c5e9f37","RancherPrime":"true"}

Create Rancher with Rancher Prime enabled
Left hand navigation > Get Support (at the bottom)
User should not see "Get Support" box
User should not see commercial links
Subscription ID box and 2 links shouldn't exist

@Shavindra This PR has conflicts - I assume the work to get the version number from the API will be part of this PR?

Codecov Report
Base: 36.30% // Head: 36.45% // Increases project coverage by +0.14% :tada:

Coverage data is based on head (98d12a3) compared to base (29e666c).
Patch coverage: 50.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #6736      +/-   ##
==========================================
+ Coverage   36.30%   36.45%   +0.14%
==========================================
  Files         967      969       +2
  Lines       17225    17234       +9
  Branches     4463     4463
==========================================
+ Hits         6253     6282      +29
+ Misses      10972    10952      -20

Flag
Coverage Δ

e2e
46.94% <50.00%> (+0.19%)
:arrow_up:

merged
36.45% <50.00%> (+0.14%)
:arrow_up:

unit
5.29% <0.00%> (-0.01%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

shell/components/CommunityLinks.vue
0.00% <ø> (ø)

shell/components/form/KeyValue.vue
100.00% <ø> (ø)

shell/nuxt.config.js
0.00% <ø> (ø)

shell/pages/c/_cluster/settings/links.vue
0.00% <ø> (ø)

shell/pages/support/index.vue
0.00% <ø> (ø)

shell/config/version.js
20.00% <20.00%> (ø)

shell/plugins/version.js
80.00% <80.00%> (ø)

shell/utils/socket.js
48.52% <0.00%> (-0.50%)
:arrow_down:

shell/store/index.js
66.13% <0.00%> (-0.46%)
:arrow_down:

shell/plugins/dashboard-store/resource-class.js
46.87% <0.00%> (-0.31%)
:arrow_down:

... and 7 more

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

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

Also notices that I can not get the links box to display on the home page - I must have dismissed it previously and I can not get it back by using 'Restore hidden cards', so this seems broken and needs to be looked at.

This is because rancher/rancher is sending {} by default. So it treated as user didn't set any links by default. It should be fixed by this PR
https://github.com/rancher/rancher/pull/39186

I have a bunch of errors going on here when I try to access the page (left master, right this PR), but I could however login successfully.

It seems like the user is logged out for some reasons when he gets 404 in the index.json request as in the screenshot.
The error can be reproduced also manually on browser first load when login as in the screenshot, left PR and right master:

Closed in favour of  #7131


Correction for raw affiliation AMAP, Univ Montpellier, CIRAD, CNRS, INRAE, IRD, Montpellier, France

Correction needed for raw affiliation AMAP, Univ Montpellier, CIRAD, CNRS, INRAE, IRD, Montpellier, France
raw_affiliation_name: AMAP, Univ Montpellier, CIRAD, CNRS, INRAE, IRD, Montpellier, France
new_rors: 051escj72;02feahw73;05q3vnk25;003vg9w96;03rnk6m14;05kpkpg04;020nks034
previous_rors: 051escj72;02feahw73;05q3vnk25;003vg9w96;03rnk6m14;05kpkpg04
works_examples: W4243579926
contact: 530c40f2244251a5cbbd92fe2706fe5b:b431ebdc1738c04260433c09ba1ca7c5dd03 @ inrae.fr

This issue was accepted and ingested by the OpenAlex team on 2024-11-18. The new affiliations should be visible within the next 7 days.


Exclude specific devices

Hello,
is there a possibility to exclude specific devices for test runs instead of defining all the devices on which the tests should run?
Thanks!

No, there is no such functionality. PRs are welcome!

Thanks for the info, if I find time PR will be sent.
Cheers

#126 opened PR for this

merged  #126


Fixed issues from changes to non-English load actions in CP 2.1.0+

I also changed the manifest version to 2.0.3-unofficial. Hope I'm doing all this github stuff right

Hi, thanks for your PR! Can you describe briefly what issue you had and how I can reproduce it? I read the CP documentation but didn't quite understand what changed :-)

So when using any language other than English, LittleNPCs content packs will fail to load assets properly in Content Patcher 2.1.0 and later due to a change made in Content Patcher 2.1.0 to the way Load actions work in non-English languages.
Basically, LittleNPCs will load its fallback assets to an asset suffixed with the language code of the current game language (as it's always done), but Content Patcher will no longer target that language code for load actions and any CP assets will fail to load.

Thanks again! Sorry that it took so long.


Does anybody know how to save project as xml  in grapheditor example?

try following
var encoder = new mxCodec()
var node = encoder.encode(graph.getModel())
var xml = mxUtils.getXml(node)


Module parse failed: Unexpected token (38:6)

Hello
I am trying to use this module in my next.js project.
I am getting this error.

How can I resolve this issue?
Thanks in advance.

Without seeing your code, but based on the error message itself, it looks like your missing the react-dom NPM package.
For example, the head of your component should look like..
import React       from 'react';
import ReactDOM    from 'react-dom';
import SlotMachine from 'react-slot-machine';

Hope this helps.

FYI, this is not an issue with this package but an issue with your app configuration.
That being said, here is how you can overcome this.
Create new React application
$ create-react-app slot-machine-test
$ npm run eject
$ npm install react-slot-machine-gen

Update webpack.config.js
            // Process any JS outside of the app with Babel.
            // Unlike the application JS, we only compile the standard ES features.
            {
              test: /\.(js|mjs)$/,
              exclude: /@babel(?:\/|\\{1,2})runtime/,
              loader: require.resolve('babel-loader'),
              options: {
                babelrc: false,
                configFile: false,
                compact: false,
                presets: [
+                  ["@babel/preset-env"],
+                  ["@babel/preset-react", {"runtime": "automatic"}],

.. and then
     // Turn off performance processing because we utilize
     // our own hints via the FileSizeReporter
     performance: false,
+    resolve: {
+      alias: {
+        react: path.resolve('./node_modules/react'),
+      }
+    }
   };
};

Closing this issue.


feat: Implement the Buf to avoid extra memory allocation

I hereby agree to the terms of the GreptimeDB CLA.
Refer to a related PR or issue link (optional)
#4065
What's changed and what's your intention?
implement Buffer to avoid extra memory allocation in file src/mito2/src/wal/entry_reader.rs.
Checklist

[ ] I have written the necessary rustdoc comments.
[ ] I have added the necessary unit tests and integration tests.
[ ] This PR requires documentation updates.

The extra memory allocation happened in the concat method. We should move the parts(Vec<Vec<u8>>) in MultiplePartEntry into the Reader.
https://github.com/GreptimeTeam/greptimedb/blob/4e5dd1ebb04d910bdb88611a8f824529701606b8/src/store-api/src/logstore/entry.rs#L142

The  Toml Check is failed, run make fmt-toml to fix it.

Are we supposed to change the return value type of into_bytes() method? I cannot think of a way to avoid extra memory allocation when we have to flat a 2d array into an 1d array.

Are we supposed to change the return value type of into_bytes() method?

Yes

completed in #4585


Template for starting community authored OSS repos

As consensus builds on clear issue labeling, what is a great way to make it easy for maintainers to implement findable labeling systems? Perhaps a clone-able starter repo or a simple GitHub app that pre-stocks labels and maybe wiki stubs, contributors.md, a license and versioning.

Forking/cloning a repository doesn't bring the labels with, but creating guidelines or a little app that OAuths in and does it for you would be cool. Hopefully the discussions in this repository will help come up with some guidelines.

We recently started a blue-print repository: https://github.com/thoughtbot/templates, I will maintain that one. The labels, while we don't have a GitHub app, could be suggestions in a README or INSTRUCTIONS in the meta-repo.

@afeld that sounds like a great idea, I'd definitely use something like that.