Support Aim as Logger

🚀 Feature
Aim is an easy-to-use and performant open-source ML experiment tracker. It would be nice if pl support to use aim with logger by default. I would like to help to make this realize.
cc @borda @awaelchli @edward-io @ananthsub @rohitgr7 @kamil-kaczmarek @Raalsky @Blaizzy

Hi
This is a duplicate of #3985.
The aim package already has an integration with PyTorch Lightning, see an example usage here. We do not plan adding more third-party logger integrations directly into the PL package at the moment.

Sorry, I miss them.


Is There a way to change volume?

Hi, currently this plugin does not implement volume change api for webview. You have to use javascript to change the volume of the media. You may find this forum helpful.

it works, im using youtube iframe, im changing youtube player using EvaluateJs method.
thank you...


incomplete $injector usage in authManager

I'm getting an error specifying a token getter using the "annotated" method of specifying dependencies: https://docs.angularjs.org/api/auto/service/$injector
My tokenGetter is essentially like:
function myTokenGetter(myService) { return myService.getToken(); }
myTokenGetter.$inject = ['myService'];

The problem arises in src/angularJwt/services/authManager.js, with this logic:
        if (Array.isArray(tokenGetter)) {
          token = $injector.invoke(tokenGetter, this, {options: null});
        } else {
          token = tokenGetter();
        }

My getter is not an array, so we ignore the $inject annotation. This foils ng-annotate and the plethora of tools that use the annotation style.
In the jwtInterceptor we call $injector.invoke unconditionally, is that the right thing to do here as well?

This is not a blocker; the workaround is to use the array syntax when configuring a token getter; we put that in place awhile back and haven't needed to touch that code.
I think this constraint could be removed with a small code change on https://github.com/auth0/angular-jwt/blob/10dd4cba6e96cb761b7851e9a46826c265721e2e/src/angularJwt/services/authManager.js#L10 to also detect the presence of $inject;
if (Array.isArray(tokenGetter) || tokenGetter.$inject) {
  token = $injector.invoke(tokenGetter, this, {options: null});
} else {
  token = tokenGetter();
}

I think that change might also help with the minification problems mentioned in the README


Use a properly terminated string

I noticed some garbage in the window title when I tried running my GUI with pugl-sys without a host.
So I fixed it.

I redid the patch, will make a new PR.


Create Cypher integration tests

Created a client for Neo4j backend, including docker-compose file.

Several TODOs remain: One in conftest.py, two in cypher_formatting.py. I'll continue working on the one for dates, datetimes, etc. next-- in the meantime, feel free to read over the other TODOs.

Small issue: although the language spec says that we can specify the Cypher version in queries, when I tested this (both via the integration tests as well as manually in my browser, the queries failed).

CYPHER 9
MATCH (n)
RETURN n

failed, but
CYPHER
MATCH (n)
RETURN n

was fine. Changing this is simple (just find-and-replace for all instances of CYPHER 9), but let's confirm that this is a legitimate issue and not just some setup issue on my computer first.

will be breaking this up into one PR for the compiler changes and another for the integration tests themselves, so I'll be closing this PR.


Catch AttributeError; set None-valued var to empty list before appending

Catch AttributeError in case there is an attempt to read non-existent attribute in the params to_grpc_metadata()
if metadata is None, set metadata to empty list before appending to it

See https://github.com/GoogleCloudPlatform/google-cloud-python/pull/5472 as a example of using this PR (on top of the latest gapic-generator:master) to update the IOT python client.
Resolves https://github.com/googleapis/gapic-generator/issues/2015 and https://github.com/googleapis/gapic-generator/issues/2014.

PTAL

Codecov Report

Merging #2061 into master will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #2061   +/-   ##
=========================================
  Coverage     86.82%   86.82%
  Complexity     4985     4985
=========================================
  Files           448      448
  Lines         19709    19709
  Branches       2079     2079
=========================================
  Hits          17112    17112
  Misses         1889     1889
  Partials        708      708

Continue to review full report at Codecov.

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

Thanks for the suggestions! PTAL


Attempted to call method "getName" on class "Twig_Test_Method"

Hello,
I tried including FOSCommentBundle in my project with Symfony 2.6 but it seems to crash Twig with the error mentioned in the title. I'm posting the require part of my composer.json below if it helps:
    "require": {
        "php": ">=5.4",
        "symfony/symfony": "2.6.*",
        "cnerta/breadcrumb-bundle": "2.0.*",
        "doctrine/orm": "2.5.*@dev",
        "doctrine/doctrine-bundle": "dev-master",
        "doctrine/doctrine-fixtures-bundle": "dev-master",
        "doctrine/doctrine-cache-bundle": "*",
        "knplabs/knp-paginator-bundle": "2.4.*",
        "liuggio/excelbundle": "2.0.*",
        "twig/extensions": "1.2.*",
        "sunra/php-simple-html-dom-parser": "v1.5.0",
        "symfony/assetic-bundle": "2.6.*",
        "symfony/swiftmailer-bundle": "2.3.*",
        "symfony/monolog-bundle": "2.6.*",
        "sensio/distribution-bundle": "3.0.*",
        "sensio/framework-extra-bundle": "3.0.*",
        "sonata-project/admin-bundle": "2.3.3",
        "sonata-project/doctrine-orm-admin-bundle": "2.3.1",
        "sonata-project/media-bundle": "2.3.1",
        "sonata-project/formatter-bundle": "2.3.3",
        "sonata-project/intl-bundle": "2.2.*",
        "jms/i18n-routing-bundle": "dev-master",
        "jms/security-extra-bundle": "1.5.*",
        "jms/serializer-bundle": "*",
        "friendsofsymfony/user-bundle": "*",
        "friendsofsymfony/rest-bundle": "*",
        "friendsofsymfony/rest": "*",
        "friendsofsymfony/comment-bundle": "2.0.*",
        "nelmio/api-doc-bundle": "2.4.*",
        "stof/doctrine-extensions-bundle": "dev-patch-2",
        "gedmo/doctrine-extensions": "v2.4.0",
        "ruudk/capifony-tools": "dev-master"
    }

I noticed the same error message after updating twig/twig from v1.20.0 to v1.21.0. The four \Twig_Test_Method references should be replaced by \Twig_SimpleTest in FOS\CommentBundle\Twig\CommentExtension to solve this problem. This, however, would create a new constraint in composer.json that twig/twig should at least be ~1.12. I'm not sure that this bundle would want to have a new constraint.
Perhaps this problem lies somewhere else. I haven't seen a reference in the twig/twig dependency about this error message. Maybe the problem is caused in combination with another bundle (Assetic?).

After some more tests I created a new issue report for twig/twig here. A temporary solution is to downgrade the twig/twig version to "~1.20.0" in your project.
Issue report: https://github.com/twigphp/Twig/issues/1791

The project owner of Twig confirmed that it is a regression and they want to provide a fix a soon as possible.
@XWB: This issue can be closed as it is an issue with twig/twig v1.21.0.

:+1:


BoxPlot update causes chart to go blank

When I update the series the chart goes blank.
Repro: https://play.vuejs.org/#...
<script setup>
import { ref } from 'vue'
import VueApexCharts from 'vue3-apexcharts'

const series = ref([{
  data: [
    { x: 'meow', y: [1,2,3,4,5] },
    { x: 'badger', y: [4,5,7,8,11] },
  ]
}])

const options = {
  plotOptions: {
    bar: { horizontal: true }
  }
}

const updateSeries = () => {
  series.value = [{
    data: [
      { x: 'meow', y: [1,4,4,5,6] },
      { x: 'badger', y: [4,5,6,7,10] },
    ]
  }]
}
</script>

<template>
  <VueApexCharts :series="series" type="boxPlot" :options="options" />
  <button @click="updateSeries">Update</button>
</template>

It turns out resizing the page causes the chart data to reappear

I can see the same issue on my project, I see the plot reappear after a resize or a change in the options. It happens out of an iframe

I haven't tested in v1.5.3 but I presume the issue is still present as there is nothing to suggest it has been fixed


A(T) is not a generic class, it's a generic module

Hi,
not sure if there is an issue for this yet (couldn't find one):
module A(T)
end

arr = [] of A(Int32)

Error:
A(T) is not a generic class, it's a generic module

Is this a bug or does it have a specific reason? If the latter, are there alternative ways to implement this?
Thanks!

A module can't be instantiated. Is there a reason you wouldn't use a class?

You can't instantiate a Module, you would use that as:
module M(T)
end

class C(T)
  include M(T)
end

x = [] of C(Int32)

What are you trying to achieve, though?

This is kind of a bug or enhancement request, you can't have an array of generic modules. But in the next version of the language this will probably be supported.

@omninonsense:
I don't want to instantiate the module. I just want an array of objects that mix in that module, so they have the same interface. This is important since i don't want users of my library to have to inherit from a class.
@asterite:
Ok, that sounds good.

@Ragmaanir Ah, so you want structural typing?

+1 for this.
It's not a feature, it's a bug. It should have the bug label. The inability to have an array of Enumerable(T), or a proc that takes an Enumerable(T) argument is a pretty serious oversight!
I needed this yesterday.

Can a module act as interface to define methods to be implemented like GoLang?

@mrkaspa Yes, you can do that right now. You can't with generic modules, but that's only a temporary limitation, you'll be able to do that in the future.

Cool, I didn't find that in the docs I thought It wasn't supported

Closed in favor of #2733


Git Stack bind-mounts breaking after container restart

Before you start please confirm the following.

[X] Yes, I've searched similar issues on GitHub.
[X] Yes, I've checked whether this issue is covered in the Portainer documentation or knowledge base.

Problem Description
When a Stack is imported from Git using the "Enable relative path volumes" the files from the repository are put into an unknown place and presented to the Stack from there. When a container using such files is restarted, empty folders with the name of the files are created in the specified directory and the container doesn't start anymore until the Stack is stopped, the folders manually removed and the Stack is manually redeployed.
Expected Behavior
Files pulled from the Git repository should be put in the specified folder stay in the folder and outlive containers and be used from there.
Actual Behavior
Files from the repository are not stored in the specified path and when a container is restarted everything breaks down and has to be manually cleaned up.
Steps to Reproduce

Create a new Stack from Git.
Enable "Enable relative path volumes" and specify the target path.
Start the Stack.
Restart a container that uses e.g. a configuration file as a bind-mount in the docker-compose.yml
Observe the container breaking as the file is not found.
Observer the mess in the in step 2 specified folder.
Stop the Stack
Delete the content of the folder.
Re-Deploy the Stack.
Back to step 4.

Portainer logs or screenshots
No response
Portainer version
2.19.1
Portainer Edition
Business Edition (BE/EE) with 5NF / 3NF license
Platform and Version
Docker 24.0.5
OS and Architecture
VMware Photon OS 5.0 (x64)
Browser
No response
What command did you use to deploy Portainer?
No response
Additional Information
No response

I haven't been able to reproduce this behavior with this test repository which contains a custom index.html. Are you able to provide an example repo or stack file that triggers this? What path are you using for your local filesystem path when deploying the stack?

I have tested it with your repository and after that the files in the other stack appeared in the proper folder and stay there after a restart as well. This issue was persistant and reproducable for around a month and over two Portainer versions and now for some reason the other stack just works and the issue isn't reproducable anymore. One of the affected containers has been a Nginx container. No clue what happened but it resolved itself.

Do let us know if the issue reoccurs. Perhaps there's something unique about your particular configuration that can cause this.


Expose the time_key parameter in gene trend plotting

[x] Additional function parameters, change functionality or change defaults?
[ ] New estimator in cr.tl.estimators?
[ ] New kernel in cr.tl.kernels?
[ ] New gene trend model in cr.ul.models?
[ ] New plotting function in cr.pl?
[ ] Other?

I tried using a non-default time key by setting time_key=key in cr.pl.gene_trends, but it didn't do anything (KeyError: "Time key 'latent_time'not found inadata.obs.", which is not the key I passed). So where can I pass my time key? This should be more prominent in the docstring, right after or before data_key

It is exposed, here's minimal working example:
adata = <your preprocessed adata>
model = cr.ul.models.GAM(adata)

cr.pl.gene_trends(adata, model=model, data_key='X',
                  genes=['Pak3','Neurog3', 'Ghrl'], ncols=3,
                  time_key='dpt_pseudotime', same_plot=True, hide_cells=True,
                  figsize=(15, 4), n_test_points=200)

cr.pl.gene_trends(adata, model=model, data_key='X',
                  genes=['Pak3','Neurog3', 'Ghrl'], ncols=3,
                  time_key='latent_time', same_plot=True, hide_cells=True,
                  figsize=(15, 4), n_test_points=200)

produces 2 different results + when I pass time_key="foo", I get an error. I will add a test for this, to soothe my peace of mind.

It's not in the docs though: https://cellrank.readthedocs.io/en/latest/api/pl/cellrank.pl.gene_trends.html#cellrank.pl.gene_trends
I suppose it's somewhere in the kwargs? This is an important parameter and should be visible, I think.

It still does not work for me though. I have an AnnData object with time key my_pseudotime, see Fig. 1 below. I try computing lineage trends using
model = cr.ul.models.GAM(adata)
cr.pl.gene_trends(adata, model=model, data_key='Ms',
                  genes=['Pdx1'], lineages=['Beta'],
                  time_key='my_pseudotime')

I get the following traceback
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~/Projects/cellrank/cellrank/pl/_utils.py in maybe_sanity_check(callbacks)
    639                 try:
--> 640                     model = cb(dummy_model, gene=gene, lineage=lineage)
    641                     assert model is dummy_model, (

~/Projects/cellrank/cellrank/pl/_utils.py in _default_model_callback(model, **kwargs)
    700 def _default_model_callback(model: BaseModel, **kwargs) -> BaseModel:
--> 701     return model.prepare(**kwargs)
    702

~/Projects/cellrank/cellrank/ul/models/_base_model.py in prepare(self, gene, lineage, backward, time_range, data_key, time_key, use_raw, threshold, weight_threshold, filter_dropouts, n_test_points)
    221         if time_key not in self.adata.obs:
--> 222             raise KeyError(f"Time key `{time_key!r}` not found in `adata.obs`.")
    223

KeyError: "Time key `'latent_time'` not found in `adata.obs`."

The above exception was the direct cause of the following exception:

RuntimeError                              Traceback (most recent call last)
<ipython-input-42-e805312cd758> in <module>
      2 cr.pl.gene_trends(adata, model=model, data_key='Ms',
      3                   genes=['Pdx1'], lineages=['Beta'],
----> 4                   time_key='my_pseudotime')

~/Projects/cellrank/cellrank/pl/_gene_trend.py in gene_trends(adata, model, genes, lineages, backward, data_key, time_range, callback, conf_int, same_plot, hide_cells, perc, lineage_cmap, abs_prob_cmap, cell_color, cell_alpha, lineage_alpha, size, lw, show_cbar, margins, sharex, sharey, gene_as_title, legend_loc, ncols, suptitle, n_jobs, backend, show_progres_bar, figsize, dpi, save, plot_kwargs, **kwargs)
    205
    206     models = _create_models(model, genes, lineages)
--> 207     callbacks = _create_callbacks(adata, callback, genes, lineages)
    208
    209     kwargs["data_key"] = data_key

~/Projects/cellrank/cellrank/pl/_utils.py in _create_callbacks(adata, callback, obs, lineages, perform_sanity_check)
    662     if callable(callback):
    663         callbacks = {o: {lin: copy(callback) for lin in lineages} for o in obs}
--> 664         maybe_sanity_check(callbacks)
    665         return callbacks
    666

~/Projects/cellrank/cellrank/pl/_utils.py in maybe_sanity_check(callbacks)
    655                     raise RuntimeError(
    656                         f"Callback validation failed for gene `{gene!r}` and lineage `{lineage!r}`."
--> 657                     ) from e
    658
    659     if callback is None:

RuntimeError: Callback validation failed for gene `'Pdx1'` and lineage `'Beta'`.

Note that I manually put the lineage probabilities into .obsm - they were not computed using cellrank. This is how I put lineage probs into the AnnData:
X = pr_res.branch_probs
names = X.columns
colors = _colors_in_order(adata, clusters=names)

L = Lineage(X.values, names=names, colors=colors)
adata.obsm['to_terminal_states'] = L

# Create final states annotation
D, _ = _fuzzy_to_discrete(L, n_most_likely=30, check_row_sums=False)
adata.obs['terminal_states'] = _series_from_one_hot_matrix(D, index=adata.obs_names, names=L.names)
adata.uns['terminal_states_colors'] = L.colors

# save the pseudotime
adata.obs['my_pseudotime'] = pr_res.pseudotime.copy()

Okay, when I cheat and rename "my_pseudotime"  to "latent_time", then I get
---------------------------------------------------------------------------
EOFError                                  Traceback (most recent call last)
<ipython-input-47-795f96b90a5d> in <module>
      2 cr.pl.gene_trends(adata, model=model, data_key='Ms',
      3                   genes=['Pdx1'], lineages=['Beta'],
----> 4                   time_key='latent_time')

~/Projects/cellrank/cellrank/pl/_gene_trend.py in gene_trends(adata, model, genes, lineages, backward, data_key, time_range, callback, conf_int, same_plot, hide_cells, perc, lineage_cmap, abs_prob_cmap, cell_color, cell_alpha, lineage_alpha, size, lw, show_cbar, margins, sharex, sharey, gene_as_title, legend_loc, ncols, suptitle, n_jobs, backend, show_progres_bar, figsize, dpi, save, plot_kwargs, **kwargs)
    227         extractor=lambda modelss: {k: v for m in modelss for k, v in m.items()},
    228         show_progress_bar=show_progres_bar,
--> 229     )(models, callbacks, lineages, time_range, **kwargs)
    230     logg.info("    Finish", time=start)
    231

~/Projects/cellrank/cellrank/ul/_parallelize.py in wrapper(*args, **kwargs)
     92         if pass_queue and show_progress_bar:
     93             pbar = None if tqdm is None else tqdm(total=col_len, unit=unit)
---> 94             queue = Manager().Queue()
     95             thread = Thread(target=update, args=(pbar, queue, len(collections)))
     96             thread.start()

~/miniconda3/envs/cellrank/lib/python3.6/multiprocessing/context.py in Manager(self)
     54         from .managers import SyncManager
     55         m = SyncManager(ctx=self.get_context())
---> 56         m.start()
     57         return m
     58

~/miniconda3/envs/cellrank/lib/python3.6/multiprocessing/managers.py in start(self, initializer, initargs)
    515         # get address of server
    516         writer.close()
--> 517         self._address = reader.recv()
    518         reader.close()
    519

~/miniconda3/envs/cellrank/lib/python3.6/multiprocessing/connection.py in recv(self)
    248         self._check_closed()
    249         self._check_readable()
--> 250         buf = self._recv_bytes()
    251         return _ForkingPickler.loads(buf.getbuffer())
    252

~/miniconda3/envs/cellrank/lib/python3.6/multiprocessing/connection.py in _recv_bytes(self, maxsize)
    405
    406     def _recv_bytes(self, maxsize=None):
--> 407         buf = self._recv(4)
    408         size, = struct.unpack("!i", buf.getvalue())
    409         if maxsize is not None and size > maxsize:

~/miniconda3/envs/cellrank/lib/python3.6/multiprocessing/connection.py in _recv(self, size, read)
    381             if n == 0:
    382                 if remaining == size:
--> 383                     raise EOFError
    384                 else:
    385                     raise OSError("got end of file during message")

EOFError:

Okay, I got it, this was not a problem with the time_key, however, I still think it should be placed more prominently in the docs. It was something with scheduling of the jobs and python 3.6 I believe. I switched to my python 3.8 environment and it works now. closing this.

one more thing: my colors are not propagated correctly now, I just get the default lineage palette. Is there anything wrong with the way I copy my data into the anndata object?

Now I'm back to the first error. I'm calling
model = cr.ul.models.GAM(adata, n_splines=10)
cr.pl.gene_trends(adata, model=model, data_key='Ms',
                  genes=['Hhex'],
                  time_key='dpt_pseudotime')

and I get
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~/Projects/cellrank/cellrank/pl/_utils.py in maybe_sanity_check(callbacks)
    639                 try:
--> 640                     model = cb(dummy_model, gene=gene, lineage=lineage)
    641                     assert model is dummy_model, (

~/Projects/cellrank/cellrank/pl/_utils.py in _default_model_callback(model, **kwargs)
    700 def _default_model_callback(model: BaseModel, **kwargs) -> BaseModel:
--> 701     return model.prepare(**kwargs)
    702

~/Projects/cellrank/cellrank/ul/models/_base_model.py in prepare(self, gene, lineage, backward, time_range, data_key, time_key, use_raw, threshold, weight_threshold, filter_dropouts, n_test_points)
    221         if time_key not in self.adata.obs:
--> 222             raise KeyError(f"Time key `{time_key!r}` not found in `adata.obs`.")
    223

KeyError: "Time key `'latent_time'` not found in `adata.obs`."

The above exception was the direct cause of the following exception:

RuntimeError                              Traceback (most recent call last)
<ipython-input-27-0e75e14130d2> in <module>
      1 model = cr.ul.models.GAM(adata, n_splines=10)
----> 2 cr.pl.gene_trends(adata, model=model, data_key='Ms',
      3                   genes=['Hhex'],
      4                   time_key='dpt_pseudotime')

~/Projects/cellrank/cellrank/pl/_gene_trend.py in gene_trends(adata, model, genes, lineages, backward, data_key, time_range, callback, conf_int, same_plot, hide_cells, perc, lineage_cmap, abs_prob_cmap, cell_color, cell_alpha, lineage_alpha, size, lw, show_cbar, margins, sharex, sharey, gene_as_title, legend_loc, ncols, suptitle, n_jobs, backend, show_progres_bar, figsize, dpi, save, plot_kwargs, **kwargs)
    205
    206     models = _create_models(model, genes, lineages)
--> 207     callbacks = _create_callbacks(adata, callback, genes, lineages)
    208
    209     kwargs["data_key"] = data_key

~/Projects/cellrank/cellrank/pl/_utils.py in _create_callbacks(adata, callback, obs, lineages, perform_sanity_check)
    662     if callable(callback):
    663         callbacks = {o: {lin: copy(callback) for lin in lineages} for o in obs}
--> 664         maybe_sanity_check(callbacks)
    665         return callbacks
    666

~/Projects/cellrank/cellrank/pl/_utils.py in maybe_sanity_check(callbacks)
    653                     ), f"Callback modified the lineage from `{lineage!r}` to `{model._lineage!r}`."
    654                 except Exception as e:
--> 655                     raise RuntimeError(
    656                         f"Callback validation failed for gene `{gene!r}` and lineage `{lineage!r}`."
    657                     ) from e

RuntimeError: Callback validation failed for gene `'Hhex'` and lineage `'Beta'`.

Ok, I see what the issue is - I don't pass relevant info to the sanity checker. I've disabled it for the default callback + I've started passing correct stuff there.
As for the colors, did you check the lineage object here whether it has the correct colors?:
colors = _colors_in_order(adata, clusters=names)

L = Lineage(X.values, names=names, colors=colors)

Great, thanks. Please make sure to explicitly include the time_key in the docstring so users can find it easily.
Re the colors, yes I have printed the lineage object and the colors look fine. Are you sure the colors are pulled from the lineage object, or from some other place in the AnnData object?

The time key is exposed properly, as for the colors, the issue can be here: https://github.com/theislab/cellrank/blob/master/cellrank/pl/_utils.py#L412
This piece of code should really be refactored, I think it fails because it doesn't find to_terminal_states_colors (it indeed could/should also look in terminal_states_colors). Could you please confirm this? If so, I will open a new PR.


Messenger Feed: UI Improvement of the Chat Feed

Improve the chat feed (left column) so that

the currently selected group is highlighted (or differentiated in some way as "active");
it's easier to select a group (currently need to click on the name specifically )
possibly "box" FeedItem to have a clear boundary between feedItems.

Acceptance Criteria

[ ] selected group, i.e. active group, is differentiated from other groups
[x] entire FeedItems are clickable, not just the name.

First aspect of this was implemented in issue-25 . The "active" state and /or box around feed items is yet to be done.

The box implementation looks ugly, so I'm scrapping the idea.


Add Wyze Docker Bridge and Scrypted instructions

Add documentation and references to wyze docker bridge and scripted.

Anyone interested in this?

Anyone interested in this?

I'd definitely be interested if pan v2 compatibility is possible

Anyone interested in this?

I'd definitely be interested if pan v2 compatibility is possible

Wyze Cam Pam v2 is compatible with Wyze Docker Bridge and Scrypted. These enable RTSP.

Wyze Docker Bridge supported cameras list:
https://github.com/mrlt8/docker-wyze-bridge?tab=readme-ov-file#supported-cameras


FIX Trim email addresses to comply with RFC 2822, 3.6.2

Issue https://github.com/silverstripe/recipe-cms/issues/47
Unit test was failing https://travis-ci.com/github/silverstripe/cwp-recipe-kitchen-sink/jobs/532563602
Invalid email address had a leading space
Corresponding unit test fix - https://github.com/silverstripe/silverstripe-userforms/pull/1097

@kinglozzer Have updated.  I've also updated TestMailer so that existing tests in other modules can still work with leading spaces in emails in their tests.
This fix was originally to support this PR which I'll close


Quoted annotations should be parsed as if parenthesized

It was recently agreed that quoted annotations should be parsed as if they were implicitly wrapped in parentheses. So, e.g., they can contain otherwise-invalid indentation, newlines within binary operators, etc.
See: https://github.com/microsoft/pyright/issues/6940#issuecomment-1886272420

Should this be implemented in the parser layer or here where we emit the warniing?

I think it should be implemented in the parse_type_annotation function which is used by the AST checker to report an error if found:
https://github.com/astral-sh/ruff/blob/a0263ab472f824b0673a46f6923abe012ba3b374/crates/ruff_python_parser/src/typing.rs#L22-L44
I would also suggest to look at other references of parse_type_annotation function to make sure they aren't affected in any way with this change. They shouldn't be but just to make sure :)


Implement data extension service

https://reconciliation-api.github.io/specs/latest/#data-extension-service

Hello,
This implementation would be much appreciated ;-) ! Data extension properties could be by default all columns of the table. The label of the columns could be retrieved from the metadata.json file https://docs.datasette.io/en/stable/metadata.html#specifying-the-label-column-for-a-table.

I would like to join the effort to add this feature.
@drkane would you consider a PR?

@frafra Yes, that would be fantastic, I haven't had a chance to look at it, but it would be great.

I began working on it, but I had to stop for the moment. I hope I can resume in the next weeks.

Hi, I've been working on this issue for a couple of days and I have sort of a prototype implementation ready, is it ok if I open a PR?

Now implemented - thanks @nicokant and @JBPressac


[Bug]: Tabs spacing is wrong on nightly 134.0a1 (2024-11-09)

What happened?

Version: 134.0a1 (2024-11-09) (aarch64)
Steps to reproduce

Update to nightly 2024-11-09
See tabs being spaced weirdly

Additional info (Optional)
Version: 134.0a1 (2024-11-09) (aarch64)
MacOS 15.1 (24B83)

having the same issue on windows 11 latest firefox nightly 134.0a1 (2024-11-09) (64-bit

A quick fix is to add --tabstrip-min-height: 0 !important to your custom css. That worked for me.

A quick fix is to add --tabstrip-min-height: 0 !important to your custom css. That worked for me.

Yeah it's worked for me too.

I don't have a custom css to add this to. This has happened after installing it for the first time.

Thank you, this has worked.


Cannot build with new monogame project

I tried your library with the latest monogame in visual studio 2022, but the projects refuse to build. Here is the output for the test project I tried making:
Severity	Code	Description	Project	File	Line	Suppression State
Error	MSB3073	The command "dotnet C:\Users\DankM\.nuget\packages\monogame.content.builder.task\<IP_ADDRESS>1\build\\..\tools\netcoreapp3.1\any\mgcb.dll /quiet /@:"C:\Users\DankM\source\repos\Erm\MGUI\MGUI.Shared\Content\MGUI.Shared.Content.mgcb" /platform:DesktopGL /outputDir:"C:/Users/DankM/source/repos/Erm/MGUI/MGUI.Shared/Content/bin/DesktopGL/MGUI.Shared.Content" /intermediateDir:"C:/Users/DankM/source/repos/Erm/MGUI/MGUI.Shared/Content/obj/DesktopGL/MGUI.Shared.Content" /workingDir:"C:/Users/DankM/source/repos/Erm/MGUI/MGUI.Shared/Content/"" exited with code -2147450730.	MGUI.Shared	C:\Users\DankM\.nuget\packages\monogame.content.builder.task\<IP_ADDRESS>1\build\MonoGame.Content.Builder.Task.targets	138
Error	MSB3073	The command "dotnet C:\Users\DankM\.nuget\packages\monogame.content.builder.task\<IP_ADDRESS>1\build\\..\tools\netcoreapp3.1\any\mgcb.dll /quiet /@:"C:\Users\DankM\source\repos\Erm\Erm\Content\Content.mgcb" /platform:DesktopGL /outputDir:"C:/Users/DankM/source/repos/Erm/Erm/Content/bin/DesktopGL/Content" /intermediateDir:"C:/Users/DankM/source/repos/Erm/Erm/Content/obj/DesktopGL/Content" /workingDir:"C:/Users/DankM/source/repos/Erm/Erm/Content/"" exited with code -2147450730.	Erm	C:\Users\DankM\.nuget\packages\monogame.content.builder.task\<IP_ADDRESS>1\build\MonoGame.Content.Builder.Task.targets	138
Error	MSB3073	The command "dotnet C:\Users\DankM\.nuget\packages\monogame.content.builder.task\<IP_ADDRESS>1\build\\..\tools\netcoreapp3.1\any\mgcb.dll /quiet /@:"C:\Users\DankM\source\repos\Erm\MGUI\MGUI.Core\Content\MGUI.Core.Content.mgcb" /platform:DesktopGL /outputDir:"C:/Users/DankM/source/repos/Erm/MGUI/MGUI.Core/Content/bin/DesktopGL/MGUI.Core.Content" /intermediateDir:"C:/Users/DankM/source/repos/Erm/MGUI/MGUI.Core/Content/obj/DesktopGL/MGUI.Core.Content" /workingDir:"C:/Users/DankM/source/repos/Erm/MGUI/MGUI.Core/Content/"" exited with code -2147450730.	MGUI.Core	C:\Users\DankM\.nuget\packages\monogame.content.builder.task\<IP_ADDRESS>1\build\MonoGame.Content.Builder.Task.targets	138

I even tried downgrading the monogame version in the main project to match the mgui version, but still no luck. I also tried fiddling with the .NET core versions, again no luck.
Any help would be great!

MGUI targets .NET 6.0, not .NET Core. Maybe that's related to the issue? Make sure you have downloaded and installed the .NET 6.0 sdk.
Also MGUI intentionally uses an older version of monogame.content.builder.task since I ran into some issues with text rendering on the newer versions (which might be fixed by now in the latest version, so you could try updating that nuget package).
If the older version of mgcb isn't opening, try this. You might also need to run the command dotnet tool install -g dotnet-mgcb-editor idk

I set target framework to net6 instead of net6-windows. Following is the error.
Severity	Code	Description	Project	File	Line	Suppression State
Error	NETSDK1136	The target platform must be set to Windows (usually by including '-windows' in the TargetFramework property) when using Windows Forms or WPF, or referencing projects or packages that do so.	One	C:\Program Files\dotnet\sdk\7.0.401\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.Shared.targets	250

I set target framework to net6 instead of net6-windows. Following is the error.
Severity Code Description Project File Line Suppression State Error NETSDK1136 The target platform must be set to Windows (usually by including '-windows' in the TargetFramework property) when using Windows Forms or WPF, or referencing projects or packages that do so. One C:\Program Files\dotnet\sdk\7.0.401\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.Shared.targets 250

Works fine for me. I tried the following:

Open MGUI.Samples.csproj in any text editor and change <TargetFramework>net6.0</TargetFramework> to <TargetFramework>net6.0-windows</TargetFramework>. Save and close.
Open MGUI.Core.csproj and do the same change as above.
Open MGUI.sln in Visual Studio 2023 and run the MGUI.Samples project

I'm on Windows PC.
Did you change the target framework on both projects? MGUI.Core.csproj has a condition to enable/disable the UseWPF setting depending on the TargetFramework:
    <UseWPF>True</UseWPF>
    <DefineConstants>$(DefineConstants);UseWPF</DefineConstants>
</PropertyGroup>```

If for whatever reason, that condition isn't working, then just remove that property group and manually set UseWPF to false in the project properties.

why not use
    <TargetFramework>net6.0</TargetFramework>

as default instead of -windows version? If the windows functionality is not really needed?

why not use
    <TargetFramework>net6.0</TargetFramework>

as default instead of -windows version? If the windows functionality is not really needed?

There are some differences in the code when targeting net6.0 instead of net6.0-windows. The main difference is that the project uses Portabke.Xaml for things like parsing Xaml strings, since namespaces such as System.Windows.Markup and System.Windows.Data are not part of net core. A side effect of this is that some of the intellisense for xaml markup extensions does not seem to work in the Visual Studio XAML Designer (at least not for me) when the target platform is not set to Windows. Though oddly enough, it seems to work fine at runtime.
Also, there are several minor differences in how Data Binding is implemented. You can search the repository for #if UseWPF to see all of the differences. In particular, net6.0-windows uses System.ComponentModel.PropertyChangedEventManager to listen for changes to property values when data bindings are configured. Since that's not available in net core, I wrote my own simple implementation but I never quite got around to refactoring it to use weak event listeners so there may be (minor) memory leaks with the data binding engine.


updating calq to pass through the events original timestamp

Calq wasn't passing through events' timestamps with the event so Calq was giving events timestamps when they arrived at Calq. This was a problem when replaying events to Calq because the original timestamp wouldn't be sent so all the events appeared to occurred during the time of replay.
I added the  Calq timestamp property from here and mapped it to each event's timestamp property.

Merge is pending review and response from Calq.
Currently their API rejects any event with a timestamp older than 2 days ago, they're going to modify this.

Calq is going to enable old data for all future Segment projects, this should be merged in

lgtm


MINOR: Automatic async refreshing of connection state did not send events

Summary of Changes
We recently added an asynchronous refreshing of connection states. Any changes in the connection state (e.g., from ATTEMPTING to CONNECTED, we would not fire the local events indicating the change in connectivity.
This fixes that and encapsulates the change in state to ensure the StateChangedListener on each ConnectionState object is called when the status changes.

A CONNECTED internal event is fired when a connection’s state was previously not connected (see below) but becomes connected, or when it was previously connected and the state has changed in some way.
A DISCONNECTED internal event is fired when a connection’s state was previously connected (see below) but becomes disconnected, or when it was not previously connected and the state has changed in some way.

This logic relies upon the ConnectionState.isConnected() method to determine whether the connection is connected or not connected.
Pull request checklist
Please check if your PR fulfills the following (if applicable):

Tests:

[ ] Added new
[ ] Updated existing
[ ] Deleted existing

[ ] Have you validated this change locally against a running instance of the Quarkus dev server?make quarkus-dev

[ ] Have you validated this change against a locally running native executable?make mvn-package-native && ./target/ide-sidecar-*-runner

Thanks, @rhauch! This looks great.

We recently added an asynchronous refreshing of connection states. Any changes in the connection state (e.g., from ATTEMPTING to CONNECTED, we would not fire the local events indicating the change in connectivity.

When we migrated to asynchronously refreshing the connection statuses, we did not change how events indicating updates in the connection states are emitted. CCloud connections emit local events for a few cases (see here and here), while other connection types don't emit events at all.
I like your approach because it emits these local events in a more generic fashion for all connection types. Also, it emits events only if the status has really changed. Before this PR, the sidecar would emit events whenever the status of a CCloud connection is refreshed.
Do you mind removing the emitting of events from the CCloudConnectionState so that we don't produce duplicate events?

Thanks for the feedback and suggestions, @flippingbits. I've incorporated your suggestions, and added a few more unit tests:

The ConnectionStateManager now fires a connected event if the new connection is already connected (e.g., local connections).
Make the ConnectionState.listener private so as to prevent subclasses for directly calling it, as the listener should only be called when lifecycle events occur (in ConnectionStateManager) or when the status changes (via ConnectionState.refreshStatus().
Removed from CCloudConnectionState and LocalConnectionState the calls to the listener, as they are no longer needed due to the above changes.
Added a few new unit tests to verify how ConnectionState.refreshStatus() should or should not call the listener.


Support macaroons/TLS auth connection

This makes the feeder able to communicate with TDEX daemons that have macaroons/TLS auth connection enabled on this Operator interfaces.
This contains also some minor changes to gracefully stop the feeder, finally. Even with the last commits, this service was stoppable only with "brute force". Now whenever a SIGINT is detected, all subservices are stopped, channel closed and go routines disposed as one would expect.
This closes #25.
Please @tiero, @louis review this.

test are failing @altafan

@tiero solved.


Basic implementation silently failing

I've created two files, simple.html and simple.js which use the basic code from the demo page and which reference the css and js files in the dist directory.
It is silently failing.
I've added jQuery and have put the hopscotch.startTour call in a $().ready call, just in case it was being executed before hopscotch had been evaluate but that has not helped...Still no error messages.

Do you have sample code that demonstrates the issue you're running into? Is it literally the same code from the /demo folder in the repo? Unfortunately, without more details, I'm unsure what the issue could be.
Hopscotch will end the tour when calling startTour if none of the targets for the steps in the tour point to anything on the page. You could try adding an onError callback to your tour to see if it ends up getting called.
I hope this helps!


New Version: Ultimaker Cura 4.12.1

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[x] Does your manifest conform to the 1.0 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

https://github.com/microsoft/winget-pkgs/pull/34451#pullrequestreview-801348514


Infobox style update: hover state and vertical center for dismiss

Before:

After:

Looks great @mperrotti! 🎉

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Compositing gif onto png

Question about an existing feature
What are you trying to achieve?
I have a background png file (48x48). I then have a shadow png file I am overlaying on top of the background (48x48). I then have a gif which is a little smaller in output size (32x34). I am trying to layer all 3 of these:
background > shadow > gif.
I am looking to have the final output to be a gif that is the original gif animated on top of the background and shadow.
When you searched for similar issues, what did you find that might be related?
I have only found answers to similar questions when the overlay is ontop fo the gif rather than the other way around.
Please provide a minimal, standalone code sample, without other dependencies, that demonstrates this question
  const image = await sharp(background)
    .composite([
      {
        input: shadow,
        left: offsets[type].shadow.left,
        tile: true,
        top: offsets[type].shadow.top,
        blend: "over",
      },
      {
        input: gif,
        animated: true,
        left: offsets[type].other.left,
        top: offsets[type].other.top,
        blend: "over",
      },
    ])
    .toFile(`${type.toLowerCase()}.gif`);

Above is the code I am using.
When I run without { animated: true } on the gif options the layering is fine but no animation. If I include { animated: true } then I get the following error:
[Error: Image to composite must have same dimensions or smaller].
Is the gif being read as a sheet or something that is increasing its width?
Here is the metadata for each of the layers:
Shadow Size {
  format: 'png',
  size: 190,
  width: 48,
  height: 48,
  space: 'srgb',
  channels: 4,
  depth: 'uchar',
  density: 72,
  isProgressive: false,
  hasProfile: false,
  hasAlpha: true
}
Gif Size {
  format: 'gif',
  size: 1847,
  width: 32,
  height: 34,
  space: 'srgb',
  channels: 4,
  depth: 'uchar',
  isProgressive: false,
  paletteBitDepth: 4,
  pages: 9,
  loop: 0,
  delay: [
    70, 70, 70, 70, 70,
    70, 70, 70, 70
  ],
  background: { r: 0, g: 0, b: 0 },
  hasProfile: false,
  hasAlpha: true
}
Background Size {
  format: 'png',
  size: 710,
  width: 48,
  height: 48,
  space: 'srgb',
  channels: 4,
  depth: 'uchar',
  density: 72,
  isProgressive: false,
  hasProfile: false,
  hasAlpha: true
}

Any help you could provide to achieve this? 🙏🏼

I had this issue when trying to do something similar. It's not going to work because the the GIF you are trying to overlay has more frames than the PNG below, so it technically has larger dimensions.  You can see this in effect if you use the metadata method on your GIF and your PNG, then console logging the height. This will show the GIF as having a much larger height, because it takes the number of frames into consideration.
Here's a rough example:
const gifData = await gif.metadata();
const pngData = await png.metadata();

console.log(gifData.height, pngData.height)

In my project, I was able to form a solution that allowed me to overlay my PNGs on top of my GIFs instead of the other way around. Your project may not allow for this though, so you might have to come up with another solution.

Animated images are loaded as a vertically-stacked "toilet roll" image. There's some background to this at https://www.libvips.org/2017/03/16/What's-new-in-8.5.html#toilet-roll-images but I should probably add something to the sharp docs about this as it's (becoming) a common question.


Don't interpred failing grep in status as command failure

A status of still not ready pods is printed out, if the check found
some. If in the meantime all pods became ready, grep can't match
pods anymore and will therefore report a non-null exit code. This is now
ignored.
Fixes #424.
Signed-off-by: Roman Mohr<EMAIL_ADDRESS>

/cc FYI @fabiand @davidvossel @vladikr @stu-gott finally found the issue for most of the still failing CI runs which are not test failures!

will trigger this a few times to see if everything works.

retest this please

retest this please

OK 8 test runs where the error would have appeared at least once according to the logs: https://rfenkhuber.fedorapeople.org/jenkins/294/console.log

7 succeeded, one failed with one test timing out. Looks good.


Feature Request: Per-identity BCC field

On my work account, I'm using different identities depending on either I send e-mails or respond on behalf of my team or on my own. In both cases I use different BCC addresses, either to send the response to the team's mail alias, or to ensure that the message is signed with my own GPG key so that I could read it in the future.
At the moment K-9 allows only to specify a global BCC address, but not per-identity BCC address (CC is supported). This forces me to either not sent the e-mails from the phone at all, or to write the BCC address manually each time so that I sent it to the correct mailbox. If the BCC field could be set per-identity, that would make this process easier to use.

I miss this feature too.
It will be very helpfull, because thunderbird desktop allready support this feature.
Anny plan to force the implementation?


[QUESTION] What do you think about the Popper.js functionality?

As you know, Bootstrap V4 is going Popper.js and I've been thinking of adding that kind of functionality into our library as well.
Please feel free to contribute with code, ideas and sample codes.

I think it would be suitable to serve the same functionality as Bootstrap v4 Javascript. As long as custom build continues to be possible without this component, there should be no disadvantages (except some more kb library size).
Right now i'm still using v3 but might take a look when i migrate to v4.

If this means I have to include a extra *.js file into my project then its a no for me

@Vuurvlieg That's exactly the point.

Just to give some context. Popper.js doesn't make use of jQuery or and other dependencies.
If you figure out how to create a smaller version of it without losing any of the functionalities please send a PR because it would be awesome.

Guys, poper.js is awesome, and it takes only 6kb gziped.
In our days its nothing when we have 1m+ js bundles

should be optional. Just like the original bootstrap library did.
Build support for it, and if the user wants it needs to install popper.js.
@artemsky popper.js is 18.5kb.

@neuropass look what I said - 6kb gziped (actually 7169bytes)
And as i know. popper.js is required by bootstrap javascript and it's not optional at all.

Be sure to place jQuery and Popper.js first, as our JavaScript plugins depend on them.

It is still a no for me but if you really want to add it, please make it optional.

@Vuurvlieg How it can be optional when all dropdown/popover/tooltip code would be based on it.
The only way is to make this 3 deps optional too.
In that case, your workflow should include webpack where you can manage tree shaking (like boostrap original did)
And/or maybe dist should include something like bs-native.js and bs-native.slim.js

I like what we have so far, a build script allowing you to create custom builds, our Popover doesn't require Tooltip, and both don't require popper.js.
The only thing I could think of is ES6, your thoughts?.

@thednp
Yor lib is nice. ES6 is nice.
Bootstrap native switched to popper because popper has very nice features like auto positioning, element following, and so many others.
I'm not sure that popper is the best way to achieve that. Of course, you can do it yourself as well.

We didn't switch yet. We only use part of it's functionality.

I'm unsure whether it's worth to rewrite the whole library for ES6. For performance reasons it might be useful in (server) applications where certain ES6 features are necessary, see http://incaseofstairs.com/six-speed/
Yeah, source code looks often a bit prettier :)
As far as i haven't used any Tooltips/Popovers (yet), those additional Popper.js features mentioned look amazing.
Including it for v4 general /dist/ but allow custom setup with or without additional Popper.js lift for respective components would be my way preferred way to go.

For anyone following this thread, please let me know if you find this functionality here interesting, we would only need to update out styleTip() utility for that.
What do you think?

@midzer @Vuurvlieg @FezVrasta @artemsky @neuropass please test latest master and do some tests with Popover and Tooltip.
Let me know if you find any bug.

Nobody interested in testing?

@thednp I've introduced some tooltips in a site and everything is working fine on first look.

@thednp had no time yet. I wanna test it in coming weekend

I'm busy these days but found some time to test the latest master.
It seems to work nicely is most cases. Altough, at smaller window/container size, sometimes when I hover the button, some tooltips and popovers are not shown. Not sure if this is intended behaviour, or a bug or just because of my quick and dirty fiddle.  This is only related to the latest version of Chrome. ie11 has another issues; The tooltips are not being removed after hovering. See here
Check fiddle. Used windows 7 64 bit latest updates, latest browsers

@Vuurvlieg I believe jsfiddle is handling something wrong, somehow it takes 400-500ms to handle some pointer/mouse events, which are long enough to not trigger transitionend and make the tooltips/popovers go away. jsfiddle IMO is not a reliable way to test "beta" versions.

The features are mostly implemented except mousemove events. We now close this but we might have to wait for more people to test before we release next version.


pkg/assets/tls: Update organization name

nit: Organization kube-aws is from the kube-aws era. The old name can cause user confusion.

rktbot run tests


Zoom Hybrid Meetings

When testing for Hybrid Meetings, I found that JwMediaWin will not allow the Zoom Speaker View Window to be on top of the Yeartext and is hidden behind it. I had to disable it and use JW Library compatibility mode in OnlyM instead.

@Jeremy909 What if you right-click the JwlMediaWin icon in the System Tray and disable "Keep on top"?

@scottys94 I did not know that was an option. I just tried it with "Keep on top" disabled and it works. Thanks for the tip.


Issue in importing k-means-constrained in Google Colab notebook

Hi Josh,
I am having an issue import the k-means-constrained package in my Colab notebook. This was working a week ago but I have been receiving the following error this week, and was wondering if there is a package incompatibility due to the
numpy version I am using:

RuntimeError                              Traceback (most recent call last)
__init__.pxd in numpy.import_array()

RuntimeError: module compiled against API version 0x10 but this version of numpy is 0xf . Check the section C-API incompatibility at the Troubleshooting ImportError section at https://numpy.org/devdocs/user/troubleshooting-importerror.html#c-api-incompatibility for indications on how to solve this problem .

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
[<ipython-input-11-89081c05e795>](https://localhost:8080/#) in <cell line: 1>()
----> 1 from k_means_constrained import KMeansConstrained
      2 get_ipython().system('pip install numpy --upgrade')
      3 import numpy as np

2 frames
[/usr/local/lib/python3.10/dist-packages/k_means_constrained/sklearn_import/metrics/pairwise.py](https://localhost:8080/#) in <module>
      8 from joblib import cpu_count, delayed, Parallel
      9
---> 10 from k_means_constrained.sklearn_import.metrics.pairwise_fast import _sparse_manhattan
     11
     12 from k_means_constrained.sklearn_import.preprocessing.data import normalize

k_means_constrained/sklearn_import/metrics/pairwise_fast.pyx in init k_means_constrained.sklearn_import.metrics.pairwise_fast()

__init__.pxd in numpy.import_array()

ImportError: numpy.core.multiarray failed to import

Could you please let me know how to resolve this? I have tried installing and uninstalling numpy, and trying to install specific versions of numpy but am still receiving this error. Thank you!

I assume this is fixed and so closing the issue. Please reopen if this issue persists or create a new issue.


small bug found in the documentation on "sdk.skynetlabs.com"

Hello developers,
I have in the "sdk.skynetlabs.com" under these links:
https://sdk.skynetlabs.com/v4/?javascript--browser#uploading-a-file
other
https://sdk.skynetlabs.com/v4/?javascript--browser#uploading-a-directory
At the point "uploading-a-file" and "uploading-a-directory", each in the sub-point "Response" in the documentation stands for:
"BrowserJS":
"sia:CABAB_1Dt0FJsxqsu_J4TodNCbCGvtFf1Uys_3EgzOlTcg"
e.g. "NodeJS":
"sia://CABAB_1Dt0FJsxqsu_J4TodNCbCGvtFf1Uys_3EgzOlTcg"
I think the "Browser JS" version is missing two "//" after "sia:" , it should look like this:
"sia://CABAB_1Dt0FJsxqsu_J4TodNCbCGvtFf1Uys_3EgzOlTcg"
It's a little confusing when you're new.

Done!


Changed expetected spelling

Summary
I can fix spelling mistakes and I am a pro in git.

Test plan
I write perfect code, just kidding - there's nothing like that in the world.

Codecov Report

Merging #3642 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #3642   +/-   ##
=======================================
  Coverage   62.46%   62.46%
=======================================
  Files         181      181
  Lines        6652     6652
  Branches        6        6
=======================================
  Hits         4155     4155
  Misses       2494     2494
  Partials        3        3

Impacted Files
Coverage Δ

...s/jest-editor-support/src/parsers/BabylonParser.js
98.64% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

thank you!


Add video thumbnails

I thing would be nice to have video preview on when searching for video files. Like most file managers do.
I thing this can be done with something like ffmpegthumbnailer.
If this features exist please let me know how can i enabled it.

This is stale and i do not even use this project anymore so... I will close the issue.


Extra MAT parameter when setting to first order absorption

When setting the model type to oral and then selecting first order absorption (which the model already has), an extra MAT parameter statement will be added.

I cannot get this to happen in the current version.